Есть ли способ различать нажатие левой и правой клавиш Shift?

Я могу распознать, когда пользователь нажимает любую клавишу Shift с помощью этого кода:

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

но есть ли способ определить, была ли нажата правая или левая клавиша Shift?


person Community    schedule 23.05.2012    source источник


Ответы (2)


Вы можете сделать это следующим образом:

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

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

    if ([theEvent modifierFlags] == 131332) {
        NSLog(@"Right shift pressed!");
    }
}
person Justin Boo    schedule 23.05.2012
comment
@user437064 Загрузите это бесплатное приложение Коды ключей отсюда: manytricks.com/keycodes . Здесь Вы можете увидеть все ключевые коды и модификаторы. Примечание. Для писем необходимо использовать коды клавиш. - person Justin Boo; 23.05.2012

В Свифте:

let isLeftShift = event.modifierFlags.rawValue & UInt(NX_DEVICELSHIFTKEYMASK) != 0
let isRightShift = event.modifierFlags.rawValue & UInt(NX_DEVICERSHIFTKEYMASK) != 0
person mohd.akram    schedule 24.10.2018
comment
Очень красивое решение. - person Binarian; 12.09.2019