X

ハードウェアキーを取得する

今回は、Androidで定義されているキーの一覧を紹介します。Androidのハードウェアキーは、おおむね4つ、メニューキー、検索キー、戻るキー(Backキー)、ホームキー(HOMEキー)が有名です。
Android端末でのハードウェアキーの並びにガイドラインが無く自由なことから、キー配置はプラットフォームの「分断」の象徴として揶揄されています。
しかし、キーの種類に目を向けると(KeyEventで定義されているものは)、Androidの「自由」を象徴するように沢山の種類があります。

KeyEventで定義されているKeyCodeマクロは大まかに以下の6つに分類できます。

  • 専用キー(MENU/Search/Back/Homeなど)
  • ゲームパッド用ボタン
  • QWERTYキー
  • 十字キー
  • GoogleTVのようなテレビリモコン用のハードウェアキー
  • 音楽/動画の再生用のメディア制御ハードウェアキー

ゲームパッド用ボタンは、ゲーム用途を意識したAndroid端末(XperiaPlayなど)を考えており、今後のトレンドに備えたKeyCodeといえます。
参考:http://developer.android.com/reference/android/view/KeyEvent.html
※一般的なQWERTYキーについては説明を省略しています。上記KeyEventを参照してください。

サンプルコード:キーの取得方法

基本となるサンプルコードは以下の通りです。

    @Override
    public boolean dispatchKeyEvent(KeyEvent e) {

       // DOWNとUPが取得できるのでログの2重表示防止のためif
       if (e.getAction() == KeyEvent.ACTION_DOWN) {
    	   //キーコード表示
    	   Log.d("KeyCode","KeyCode:"+ e.getKeyCode());
       }

       return super.dispatchKeyEvent(e);
    }

Activity#dispatchKeyEventでキーのPushとReleaseを取得できます。

KeyEvent#getKeyCodeメソッドで取得したキーコードはKeyEvent.KEYCODE_BACKなど、KeyEventのマクロ定義と比較して判定してください。
TechBoosterではキー入力に関して、以下のような様々なテクニックを紹介しています。あわせてどうぞ。

 

代表的なハードウェアキー

代表的なハードウェアキーの一覧です。あまり使われていないキー(ヘッドセット等)も定義されています。またHOMEキーなど一部のハードウェアキーはアプリケーションで取得することができません。

ハードウェアキーのマクロ定義 概要
KEYCODE_APP_SWITCH アプリケーションの切り替え
KEYCODE_BACK バックキー
KEYCODE_CALL 通話キー
KEYCODE_CAMERA カメラ起動
KEYCODE_ENDCALL 終話キー
KEYCODE_ENVELOPE メール起動特殊キー
KEYCODE_EXPLORER ファイラ起動用特殊キー
KEYCODE_FOCUS カメラフォーカスキー
KEYCODE_HEADSETHOOK ヘッドセット割込キー
KEYCODE_HOME ホームキー
KEYCODE_MENU メニューキー
KEYCODE_POWER 電源キー
KEYCODE_SEARCH 検索キー
KEYCODE_SETTINGS 設定キー
KEYCODE_SWITCH_CHARSET 文字入力モード切替
KEYCODE_VOLUME_DOWN ボリュームDOWN
KEYCODE_VOLUME_MUTE ミュート
KEYCODE_VOLUME_UP ボリュームUP

以下、ゲームパッド、十字キー、メディア制御キー、テンキー、TVリモートなど特殊なキーコード一覧です。

KeyEventマクロ ゲーム用

XperiaPlayなどゲーム用インターフェイスです。

ゲームパッドのマクロ定義 概要
KEYCODE_BUTTON_A Aボタン
KEYCODE_BUTTON_B Bボタン
KEYCODE_BUTTON_C Cボタン
KEYCODE_BUTTON_L1 L1ボタン
KEYCODE_BUTTON_L2 L2ボタン
KEYCODE_BUTTON_MODE モードボタン
KEYCODE_BUTTON_R1 R1ボタン
KEYCODE_BUTTON_R2 R2ボタン
KEYCODE_BUTTON_SELECT 選択ボタン
KEYCODE_BUTTON_START スタートボタン
KEYCODE_BUTTON_THUMBL 左Thumbボタン
KEYCODE_BUTTON_THUMBR 右Thumbボタン
KEYCODE_BUTTON_X Xボタン
KEYCODE_BUTTON_Y Yボタン
KEYCODE_BUTTON_Z Zボタン


KeyEventマクロ 十字キー

十字キーはDPADとして専用にマクロが用意されています。

十字キーの定義 概要
KEYCODE_DPAD_CENTER センターキー
KEYCODE_DPAD_DOWN 下キー
KEYCODE_DPAD_LEFT 左キー
KEYCODE_DPAD_RIGHT 右キー
KEYCODE_DPAD_UP 上キー


KeyEventマクロ メディア制御キー

メディアの制御に特化したハードウェアキーです。

メディアのマクロ定義 概要
KEYCODE_MEDIA_CLOSE 終了キー
KEYCODE_MEDIA_EJECT イジェクトキー
KEYCODE_MEDIA_FAST_FORWARD 早送りキー
KEYCODE_MEDIA_NEXT 曲送りキー
KEYCODE_MEDIA_PAUSE 一時停止キー
KEYCODE_MEDIA_PLAY 再生キー
KEYCODE_MEDIA_PLAY_PAUSE 再生/一時停止共用キー
KEYCODE_MEDIA_PREVIOUS 曲戻しキー
KEYCODE_MEDIA_RECORD 録音キー
KEYCODE_MEDIA_REWIND 巻き戻しキー
KEYCODE_MEDIA_STOP 停止キー


KeyEventマクロ テンキー

テンキーのマクロ一覧です。

テンキーのマクロ定義 概要
KEYCODE_NUMPAD_0 テンキー: 0
KEYCODE_NUMPAD_1 テンキー: 1
KEYCODE_NUMPAD_2 テンキー: 2
KEYCODE_NUMPAD_3 テンキー: 3
KEYCODE_NUMPAD_4 テンキー: 4
KEYCODE_NUMPAD_5 テンキー: 5
KEYCODE_NUMPAD_6 テンキー: 6
KEYCODE_NUMPAD_7 テンキー: 7
KEYCODE_NUMPAD_8 テンキー: 8
KEYCODE_NUMPAD_9 テンキー: 9
KEYCODE_NUMPAD_ADD テンキー: +
KEYCODE_NUMPAD_COMMA テンキー: ,
KEYCODE_NUMPAD_DIVIDE テンキー: /
KEYCODE_NUMPAD_DOT テンキー: .
KEYCODE_NUMPAD_ENTER テンキー: エンター
KEYCODE_NUMPAD_EQUALS 等号
KEYCODE_NUMPAD_LEFT_PAREN 括弧(
KEYCODE_NUMPAD_MULTIPLY テンキー: *
KEYCODE_NUMPAD_RIGHT_PAREN 括弧)
KEYCODE_NUMPAD_SUBTRACT テンキー: -


KeyEventマクロ TVリモコン機能

TVリモコン機能がまとめられています。GoogleTVでの利用を想定しているようです。

TV Remoteのマクロ定義 概要
KEYCODE_AVR_INPUT AV入力切り替え
KEYCODE_AVR_POWER AV入力元電源キー
KEYCODE_BOOKMARK WebSiteのブックマーク
KEYCODE_CAPTIONS キャプション(字幕)キー
KEYCODE_CHANNEL_DOWN チャンネル切り替え(下)
KEYCODE_CHANNEL_UP チャンネル切り替え(上)
KEYCODE_DVR ビデオ入力モード
KEYCODE_GUIDE TVガイドキー
KEYCODE_INFO 情報キー
KEYCODE_PROG_BLUE 青ボタン
KEYCODE_PROG_GREEN 緑ボタン
KEYCODE_PROG_RED 赤ボタン
KEYCODE_PROG_YELLOW 黄ボタン
KEYCODE_STB_INPUT セットトップボックス入力切り替え
KEYCODE_STB_POWER セットトップボックス電源キー
KEYCODE_TV テレビ切り替え
KEYCODE_TV_INPUT テレビ入力切り替え
KEYCODE_TV_POWER テレビ電源キー

mhidaka: Software Engineerだよ。DroidKaigi Organizer / Androidと組込とRe:VIEW。techbooster主宰。mhidaka's writings http://booklog.jp/users/mhidaka 技術書典! http://techbookfest.org