AndroidでBluetooth/USBキーボードを日本語配列として使う方法

  • 投稿 : 2012-10-25
  • 更新 : 2014-06-24

本記事は広告およびアフィリエイトプログラムによる収益を得ています

はじめに

本記事の要約

・Android 2系とAndroid 4系では違うみたい
・標準では日本語キーボードでも英語キーボードとして認識するみたい
 そのため「@ : ; [ ] { } ( ) _ 」の記号あたりが、キーの刻印と実際にちがう文字が表示される
・日本語入力の切り替えは、IMEの対応次第(OSでなく、アプリ側(IME)での対応)
 [SHIFT]+[スペース]か[半角/全角]、[ALT]+[Space]で切り替わるパターンが多い
・root化は必要だが、キーマップファイルを書き換えると、日本語配列に対応できる

本記事の目次

1.日本語入力の切り替え方法
2.Android 2.x 系で日本語キーボードとして使う方法
3.Android 4.x 系で日本語キーボードとして使う方法

1.日本語入力の切り替え方法

キーボード側のキーで、日本語/半角の切り替えができるかどうか?
Android 2系で確認しました。

ATOK

カテゴリ: 仕事効率化
販売元: JustSystems Corporation
価格: Free


[半角/全角]で切り替わる
プレインストールで入っているATOKで古いバージョンでは、対応していないようだ

Simeji(日本語入力キーボード)

カテゴリ: ツール
販売元: バイドゥ株式会社
価格: Free


[SHIFT]+[スペース]で可能

日本語フルキーボード For Tablet

カテゴリ: ツール
販売元: Repy
価格: Free


[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.キーマップファイルの作成
作成は面倒なので、日本語キーボードならたぶん同じだろうということで、他の人が作成したものを今回は使用しました。

各キーボード用のキーマップおよびキーレイアウトファイルが入ってる。
キートップ表示どおりのマッピングにしてある。
zipの中身を取り出して、adb push すれば汎用的にAndroid機で使えるはず。
ELECOM TK-FBM023用 patch-TKFBM023_signed.zip
Trash 915: 何か - 共通
上記引用先のサイトの「ELECOM TK-FBM023用のpatch-TKFBM023_signed.zip」というものを使用します。

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とかそのあたりで、日本語配列のキーボードを使う方法のようです。

カテゴリ: カスタマイズ
販売元: ta9mar
価格: Free



これを使うだけでよいそうです。
情報源:
Android4.1で日本語配列キーボード(USB/Bluetooth)を使えるようにする » ta9mar開発メモ

おまけ

追記:2013/01/29
もしかすると、キーボード側で「JIS⇔US配列切替」というのがあると、悩まなくてもよいのかも。
値段が下がったので、結局買ってみることにしました。(参考記事:Bluetooth3.0キーボード TK-FBM036はいい感じ 【在庫限りのお買い得】

スポンサーリンク

タグ#Android