イベントタップを設定すると、CGEventを使ってどの修飾キーが押されたのか特定できません。CGEventタップで押された修飾キーを取得する
CGEventFlags flagsP;
flagsP=CGEventGetFlags(event);
NSLog(@"flags: 0x%llX",flagsP);
NSLog(@"stored: 0x%llX",kCGEventFlagMaskCommand);
if (flagsP==kCGEventFlagMaskCommand) {
NSLog(@"command pressed");
}
上記のスニペットを指定すると、最初のNSLogは2番目のNSLogから別の値を返します。コマンド修飾キーが押されたときに条件が実行されることはありません。
特定のCGEventに対して、コマンド、代替、オプション、コントロール、またはシフトが押されたかどうかを確認する必要があります。まず、私は上記がうまくいかない理由を理解する助けが必要です。
ありがとうございます!
ありがとう、ピーター。それはそれを非常にうまく説明し、私の問題を解決します。 – the979kid
モディファイアが押されているかどうかを確認する方法があるかどうかを知っていますか?あるいは、それぞれのように明示的にチェックする必要がありますか? –
私はこれをしましたが、それが最高の/きれいな方法であるかどうかわかりません。 'BOOL isModifierPressed =(フラグ&(kCGEventFlagMaskAlternate | kCGEventFlagMaskCommand | kCGEventFlagMaskControl | kCGEventFlagMaskShift))> 0; ' –