OS X のキーストロークの検出に問題があります。キーボードのキーが押されるたびに、キーダウンとキーリリースまたはキーアップを検出する必要があります。でアプリケーションのイベント処理チェーンをインターセプトする場合、これはかなり簡単です[ NSEvent addLocalMonitorForEventsMatchingMask: handler: ]
。これにより、通常の印刷キーや、shift、ctrl、alt、および cmd キーの検出に使用できるNSEvent
さまざまなイベント タイプのを傍受して変更できます。実際、モディファイア フラグは Shift、Ctrl、Alt、および Cmd キーのキー アップとキー ダウンの両方で変化するため、 とを一緒にチェックすることで、これらのキーのキー アップおよびキー ダウン イベントとして使用できます。NSKeyUp
NSKeyDown
NSFlagsChanged
NSFlagsChanged
[NSEvent modifierFlags]
[NSEvent keyCode]
ただし、Capslock は異なります。capslock 修飾子は実際にはキーが押されたときにのみ機能するため、capslock を押すと、キーがNSFlagsChanged
離されたときではなく、capslock が押されたときにのみ取得されます。andはNSKeyUp
、NSKeyDown
capslock、shift、ctrl などの修飾キーでは出力されません。
Capslockキーアップイベントを取得するための方法、おそらく低レベルのインターフェースを提案できますか? kqueuesなどを使用する必要がありますか?