Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 是否有办法区分按下的左右换档键?_Objective C_Macos_Cocoa_Nsevent - Fatal编程技术网

Objective c 是否有办法区分按下的左右换档键?

Objective c 是否有办法区分按下的左右换档键?,objective-c,macos,cocoa,nsevent,Objective C,Macos,Cocoa,Nsevent,我可以识别用户何时按下带有此代码的任何Shift键: -(void)flagsChanged:(NSEvent *)theEvent { if ([theEvent modifierFlags] & NSShiftKeyMask) //. . . } 但是有没有办法区分按下的是右移键还是左移键?您可以这样做: -(void)flagsChanged:(NSEvent *)theEvent { if ([theEvent modifierFlags] =

我可以识别用户何时按下带有此代码的任何Shift键:

-(void)flagsChanged:(NSEvent *)theEvent
{
    if ([theEvent modifierFlags] & NSShiftKeyMask)
        //. . .
}

但是有没有办法区分按下的是右移键还是左移键?

您可以这样做:

-(void)flagsChanged:(NSEvent *)theEvent {

    if ([theEvent modifierFlags] == 131330) {
        NSLog(@"Left shift pressed!");
    }

    if ([theEvent modifierFlags] == 131332) {
        NSLog(@"Right shift pressed!");
    }
}
迅速:

let isLeftShift=event.modifierFlags.rawValue&UInt(NX\u设备移位键掩码)!=0
让isRightShift=event.modifierFlags.rawValue&UInt(NX\u设备移位键掩码)!=0

@user437064从此处下载此免费应用程序密钥代码:。在这里,您可以看到所有键代码和修改器。注意:对于字母,您需要使用关键代码。非常好的解决方案。
static __INLINE void i_modifier_flags(
                        NSUInteger flags,
                        bool_t *rshift, bool_t *rctrl, bool_t *rcommand, bool_t *ralt,
                        bool_t *lshift, bool_t *lctrl, bool_t *lcommand, bool_t *lalt)
{
    *rshift = ((flags & 131332) == 131332) ? TRUE : FALSE;
    *rctrl = ((flags & 270592) == 270592) ? TRUE : FALSE;
    *rcommand = ((flags & 1048848) == 1048848) ? TRUE : FALSE;
    *ralt = ((flags & 524608) == 524608) ? TRUE : FALSE;
    *lshift = ((flags & 131330) == 131330) ? TRUE : FALSE;
    *lctrl = ((flags & 262401) == 262401) ? TRUE : FALSE;
    *lcommand = ((flags & 1048840) == 1048840) ? TRUE : FALSE;
    *lalt = ((flags & 524576) == 524576) ? TRUE : FALSE;
}