ユーザーが押すすべてのキーを検出する必要があります。を使用-keyDown:
すると、ほとんどのキー (英数字、ファンクション キー、矢印、スペース バー、エスケープ、リターン) を押すことができますが、単独で押すと修飾キーを取得できません。
修飾キーを含むキーストロークを完全に検出するにはどうすればよいですか?
それを試してみてください:
[NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask|NSFlagsChangedMask handler:^NSEvent *(NSEvent *incomingEvent) {
if (incomingEvent.type == NSFlagsChanged && (incomingEvent.modifierFlags & NSDeviceIndependentModifierFlagsMask)) {
NSLog(@"modifier key down");
} else if (incomingEvent.type == NSKeyDown) {
NSLog(@"other key down");
}
return incomingEvent;
}];
flagsChanged: メソッドは、他のキーが同時に押されることなく修飾キーが押されたことを検出するのに役立ちます。たとえば、ユーザーが単独で Option キーを押した場合、レスポンダー オブジェクトは flagsChanged: の実装でこれを検出できます。