本記事は広告およびアフィリエイトプログラムによる収益を得ています
はじめに
本記事の要約
・Android 2系とAndroid 4系では違うみたい・標準では日本語キーボードでも英語キーボードとして認識するみたい
そのため「@ : ; [ ] { } ( ) _ 」の記号あたりが、キーの刻印と実際にちがう文字が表示される
・日本語入力の切り替えは、IMEの対応次第(OSでなく、アプリ側(IME)での対応)
[SHIFT]+[スペース]か[半角/全角]、[ALT]+[Space]で切り替わるパターンが多い
・root化は必要だが、キーマップファイルを書き換えると、日本語配列に対応できる
本記事の目次
1.日本語入力の切り替え方法2.Android 2.x 系で日本語キーボードとして使う方法
3.Android 4.x 系で日本語キーボードとして使う方法
1.日本語入力の切り替え方法
キーボード側のキーで、日本語/半角の切り替えができるかどうか?Android 2系で確認しました。
ATOK
[半角/全角]で切り替わる
プレインストールで入っているATOKで古いバージョンでは、対応していないようだ
Simeji(日本語入力キーボード)
[SHIFT]+[スペース]で可能
日本語フルキーボード For Tablet
[SHIFT]+[スペース]、[半角/全角]のどちらかで切り替え可能。ただし、設定画面で設定する必要あり
2.Android 2.x 系で日本語キーボードとして使う方法
該当ファイルを書き換えるためには、root化する必要があります。「@ : ; [ ] { } ( ) _ 」の記号が刻印どおりでないとどうしても嫌だという人以外は、無理しないほうが良いと思います。
要約
/system/usr/keylayout/qwerty.kl/system/usr/keychars/qwerty.kcm.bin
このあたりのファイルを書き換えると実現できます。
上記の2つのファイルを書き換えないで、デバイス名.kl,デバイス名.kcm.binのようなファイルを用意すると、該当デバイス(キーボード)だけ有効なキーマップ情報を作成できます。こちらのほうが、無難なやり方だと思います。
TK-GMFBP029BKの場合のやり方
Bluetoothの日本語キーボードなら、たぶんやり方自体は同じだと思います。1.キーマップファイルの作成
作成は面倒なので、日本語キーボードならたぶん同じだろうということで、他の人が作成したものを今回は使用しました。
各キーボード用のキーマップおよびキーレイアウトファイルが入ってる。上記引用先のサイトの「ELECOM TK-FBM023用のpatch-TKFBM023_signed.zip」というものを使用します。
キートップ表示どおりのマッピングにしてある。
zipの中身を取り出して、adb push すれば汎用的にAndroid機で使えるはず。
ELECOM TK-FBM023用 patch-TKFBM023_signed.zip
Trash 915: 何か - 共通
2.デバイス名は?
デバイス名がわからない場合は、qwerty.klとqwerty.kcm.binを変更するしかないみたいです。
キーボードの接続時のログとかから、調べるみたいですがどうやっていいのかわからないので、予想してあててみることで今回は解決しました。
予想では、Bluetoothの接続時に出てくる名前がデバイス名ではないかと?(スペースは「_」に) ※画像参考
ELECOM_TK-FBP029_series.kl
ELECOM_TK-FBP029_series.kcm.bin
1を解凍して、上記のファイル名に変更
表示名から予想して上記のようにファイル名を付けるとうまくいきました。
※大文字小文字の区別あり
引用先をみると、以下のキーボードのデバイス名は以下のとおりのようです。
任天堂のキーボード : Nintendo_Wireless_Keyboard
TK-FBM023: TK-FBM023_Series
TKFBP018: Elecom_Foldable_Bluetooth_Keyboard
3.該当箇所にコピーする
/system/usr/keylayout/*.kl
/system/usr/keychars/*.kcm.bin
Android 4.x 系で日本語キーボードとして使う方法
Android 4.0以降
/system/usr/keylayout/qwerty.kl/system/usr/keychars/qwerty.kcm
をベースに書き換えるとOKです。
どちらもテキストファイルなので、書き換え自体は簡単だと思います。
そのまま上書きというのは、不具合がありそうなので、以下のようにキーボードに対応したファイルを作成する方法が良いでしょう。
Vendor_[vendor ID]_Product_[product ID].kl
Vendor_[vendor ID]_Product_[product ID].kcm
あと、念のためにファイル属性を同フォルダのファイルと同じにしておいたほうが良いと思います。
ターミナル(端末エミュレータ、コマンドプロンプト)で、以下のコマンドを打てば、接続しているBluetoothキーボードのVendor IDとProduct IDは判明します。
# cat /proc/bus/input/devices
ELECOM_TK-FBP029_seriesの場合は、以下のようになります。
Vendor_056e_Product_101f.kl
Vendor_056e_Product_101f.kcm
3.Android 4.1以降
Nexus 7とかそのあたりで、日本語配列のキーボードを使う方法のようです。これを使うだけでよいそうです。
情報源:
・Android4.1で日本語配列キーボード(USB/Bluetooth)を使えるようにする » ta9mar開発メモ
おまけ
追記:2013/01/29値段が下がったので、結局買ってみることにしました。(参考記事:Bluetooth3.0キーボード TK-FBM036はいい感じ 【在庫限りのお買い得】)
スポンサーリンク