KeyEventDispatcher.dispatchKeyEvent()
すべてのキーボード アクションを外部 (Android) デバイスに渡すために を実装しています。デバイスで KeyEvents を提供されたプロトコルに簡単に変換するための重要な問題の 1 つは、イベントを 2 つのタイプに分けることです: Unicode イベントと「アクション イベント」 (その他、編集、ナビゲーション キー - F1、Del、矢印など)。
Java は、ユーザー KeyStrokes によって生成された Unicode 文字を伝えることを非常に便利にし(KeyEvent)e.getID() == KeyEvent.KEY_TYPED
ますe.getKeyChar()
。修飾キー、キーホールドなどを扱う必要はありません。
問題は、KEY_TYPED イベントを生成しない他のタイプのキー入力イベントから始まります。Oracle のドキュメントにKeyEvent
記載されているように、「F1 のようなアクション キーや HELP キーなど、Unicode 文字にならないキーの組み合わせはKEY_TYPED
イベントを生成しません」。
これらのイベントを次の 2 つの方法で処理できる必要があります。
KEY_TYPED
イベントの重複をデバイスに送信することを避けるために、生成するイベントからそれらを分離します (つまり、これらが既にイベントの一部として処理されている場合は、送信しないなど)
VK_ALT
。VK_ENTER
KEY_TYPED
switch
KEY_TYPED
デバイスのプロトコルに適したコードに変換するために、既知のアクション イベントのリストに対する非イベント。
これらのいずれかを達成できますか?どのように?