当用户使用以下代码按任意Shift键时,我可以识别:
-(void)flagsChanged:(NSEvent *)theEvent
{
if ([theEvent modifierFlags] & NSShiftKeyMask)
//. . .
}
但有没有办法区分它是按下的右键还是左键?
答案 0 :(得分:7)
你可以这样做:
-(void)flagsChanged:(NSEvent *)theEvent {
if ([theEvent modifierFlags] == 131330) {
NSLog(@"Left shift pressed!");
}
if ([theEvent modifierFlags] == 131332) {
NSLog(@"Right shift pressed!");
}
}
答案 1 :(得分:1)
在Swift中:
let isLeftShift = event.modifierFlags.rawValue & UInt(NX_DEVICELSHIFTKEYMASK) != 0
let isRightShift = event.modifierFlags.rawValue & UInt(NX_DEVICERSHIFTKEYMASK) != 0
答案 2 :(得分:-1)
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;
}