1

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_ALTVK_ENTERKEY_TYPED
  • switchKEY_TYPEDデバイスのプロトコルに適したコードに変換するために、既知のアクション イベントのリストに対する非イベント。

    これらのいずれかを達成できますか?どのように?

  • 4

    1 に答える 1