Bluetooth接続の英語キーボードを刻印通りに打つ
以前、写真のASUS MeMO Pad HD 7 (ME173X)対応のジャケット付きBluetoothキーボードを購入したのだが、キートップの刻印通りに打てないキーが存在する。
この問題を解決した時の経緯を以下に記載する。
なお、以下に記載のコマンドはAndroid上のTerminal IDEのコンソールで実行した。
コマンドの実行に必要なroot権限はSuperSUの「su」コマンドで取得した。
デバイス情報の取得
デバイス情報は「dumpsys input」コマンドで得られる。
INPUT MANAGER (dumpsys input) Event Hub State: BuiltInKeyboardId: -2 Devices: 7: hid-keyboard Classes: 0x0000014b Path: /dev/input/event5 Descriptor: e6829a71d080dbf7cc1317c4cc5515a23611afd2 Location: UniqueId: Identifier: bus=0x0019, vendor=0x0000, product=0x0000, version=0x0000 KeyLayoutFile: /system/usr/keylayout/hid-keyboard.kl KeyCharacterMapFile: /system/usr/keychars/Generic-ja_JP.kcm ConfigurationFile: /system/usr/idc/hid-keyboard.idc HaveKeyboardLayoutOverlay: true
キーコードの取得
上記「デバイス情報」の「Path」から、不正な文字が表示されるキーのキーコードを「getevent /dev/input/event5」コマンドで取得した。
刻印 | 表示 | キーコード(10進数) |
---|---|---|
[ | @ | 26 |
] | [ | 27 |
\ | ] | 43 |
| | } | 42 43 |
{ | @ | 42 26 |
} | { | 42 27 |
~ | なし | 42 41 |
` | 半角/全角 | 41 |
※上記の「42」は左シフトキー
キーと文字の割り当て
上記「デバイス情報」の「Generic-ja_JP.kcm」を見ると、以下の記述があるため、今回の現象が発生していることが分かる。
map key 26 AT map key 27 LEFT_BRACKET map key 41 ZENKAKU_HANKAKU map key 43 RIGHT_BRACKET
IDCファイルの変更
上記「デバイス情報」の「hid-keyboard.idc」を以下のように変更した。
【変更前】 keyboard.layout = hid-keyboard keyboard.characterMap = Generic-ja_JP 【変更後】 keyboard.layout = hid-keyboard keyboard.characterMap = Generic
実際の変更は以下の手順で行う。