ユーザーが編集可能なテキストビュー(
EditText
ユーザーがハードウェア キーボードを接続している場合でも、
入力はシステムによって処理されます。ただし、データの取り込みと
キーボード入力をご自身で直接処理する場合は、コールバック メソッドを実装して行います。
KeyEvent.Callback
発
インターフェース(onKeyDown()
など)
および onKeyMultiple()
。
Activity
と
と View
クラスは、
KeyEvent.Callback
インターフェースなので、
通常、これらのクラスの拡張内でコールバック メソッドをオーバーライドします。
あります。
注:
KeyEvent
クラスと関連 API
ハードウェア キーボードからのみキーボード イベントが送信されることを想定します。キーの受信に依存しない
ソフトインプット メソッド(画面キーボード)のキーのイベントをトリガーできます。
単一のキーイベントの処理
キーの押下を個別に処理するには、
onKeyDown()
または onKeyUp()
、
あります。通常は
onKeyUp()
すべての予定を確実に受け取るには、キーを長押しすると
この場合、onKeyDown()
が複数回呼び出されます。
たとえば、次の実装では、いくつかのキーボードキーに対応してゲームを制御しています。
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_D -> { moveShip(MOVE_LEFT) true } KeyEvent.KEYCODE_F -> { moveShip(MOVE_RIGHT) true } KeyEvent.KEYCODE_J -> { fireMachineGun() true } KeyEvent.KEYCODE_K -> { fireMissile() true } else -> super.onKeyUp(keyCode, event) } }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_D: moveShip(MOVE_LEFT); return true; case KeyEvent.KEYCODE_F: moveShip(MOVE_RIGHT); return true; case KeyEvent.KEYCODE_J: fireMachineGun(); return true; case KeyEvent.KEYCODE_K: fireMissile(); return true; default: return super.onKeyUp(keyCode, event); } }
修飾キーの処理
修飾キーイベント(Shift でキーが組み合わされたときなど)に応答する
[管理] をクリックすると、
KeyEvent
をクエリする
コールバックメソッドに渡されます。複数の方法
次のような修飾キーに関する情報を提供します。
getModifiers()
および getMetaState()
。
ただし、最もシンプルな解決策は、
関心のある修飾キーが
isShiftPressed()
および isCtrlPressed()
。
たとえば、onKeyUp()
の実装は次のようになります。
ここでも、Shift キーがいずれかのキーで押された場合の処理が追加されます。
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { ... KeyEvent.KEYCODE_J -> { if (event.isShiftPressed) { fireLaser() } else { fireMachineGun() } true } KeyEvent.KEYCODE_K -> { if (event.isShiftPressed) { fireSeekingMissle() } else { fireMissile() } true } else -> super.onKeyUp(keyCode, event) } }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { ... case KeyEvent.KEYCODE_J: if (event.isShiftPressed()) { fireLaser(); } else { fireMachineGun(); } return true; case KeyEvent.KEYCODE_K: if (event.isShiftPressed()) { fireSeekingMissle(); } else { fireMissile(); } return true; default: return super.onKeyUp(keyCode, event); } }
参考情報
- <ph type="x-smartling-placeholder"></ph> キーボード ショートカット ヘルパー : ユーザーがアプリが提供するキーボード ショートカットを検索できるシステム画面。