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

はじめに

本記事の要約
・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

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

Simeji(日本語入力キーボード)
カテゴリ:ツール
販売元:バイドゥ株式会社

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

日本語フルキーボード For Tablet
カテゴリ:ツール
販売元: Repy

[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


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

おまけ

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

【ブログ内で関連ある記事】

スポンサーリンク

『AndroidでBluetooth/USBキーボードを日本語配列として使う方法』へのコメント

  1. 名前:感謝♪ : 投稿日:2015/09/28 01:09

    マイクロソフトの Bluetooth キーボード「Universal Mobile Keyboard」を アマゾンの「fire HDX 8.9」にペアリングしたのですが、この Bluetooth キーボードにはもともと「半角 / 全角 切替キー」が無いため、半角 / 全角(日本語・英語 切り替え)ができなくて困っていましたが、当記事の最初のほうを参考にしてやってみましたら、[SHIFT]+[スペース]、または、[Fn]+[スペース]にて、半角 / 全角(日本語・英語 切り替え)ができることが分かりました。
    半角 / 全角(日本語・英語 切り替え)が使えないとお話しにならないので、正直、この Bluetooth キーボードの使用を諦めかけていましたが、当記事がきっかけとなり、一気に解決することができ、本当に有り難いです。嬉しくなりまして、つい、コメントしてしまいました♪
    本当に、本当にありがとうございます m(__)m

  2. 名前:管理人 : 投稿日:2015/09/28 13:33

    「Universal Mobile Keyboard」がどこかの記事をみて、安ければほしいなぁと思ってたのでうらやましいです。

    [SHIFT]+[スペース]というのは、Android(Linux系)でよく、IMEのON/OFFに使われていたと思います。

    >>
     さらに言えば、日本語キーボードにある半角/全角キーもない。日本語入力をする際は、スペースバー右の「カタカナ/ひらがな/ローマ字」キー、英語に戻る際は、スペースバー左の「英数」キーを押すことになる。

    【レビュー】マルチOS対応の日本マイクロソフト「Universal Mobile Keyboard」を試す - PC Watch http://pc.watch.impress.co.jp/docs/topic/review/20150221_689371.html
    <<

    ちょっと検索すると上記のような話も見つかりました。

  3. 名前:再び感謝♪ : 投稿日:2015/09/29 09:52

    管理人さん、早速のお返事を本当にありがとうございます m(__)m
    「Universal Mobile Keyboard」は「半角 / 全角(日本語・英語 切り替え)」さえできれば、本当に使いやすいですよ♪
    「Universal Mobile Keyboard」は今、アマゾンやビックカメラで、かなりお安く販売されています。
    私はビックカメラで購入しました (*^_^*)
    他店では今も8000円以上で売られていますので、結構、お得です♪

    管理人さんが仰られましたように「Universal Mobile Keyboard」の説明書きには、

      ● 日本語入力をする際は、スペースバー右の「カタカナ/ひらがな/ローマ字」キー、
        英語に戻る際は、スペースバー左の「英数」キーを押すことになる。

    と書かれているのですが、「fire HDX 8.9」では、この「英数」キーを押しても、日本語入力から英語入力に変えることができなかったんです・・・(涙)
    当記事での管理人さんのご助言のお蔭で [SHIFT]+[スペース] にていとも簡単に変えることができましたが、この「英数」キーは、「fire HDX 8.9」では、英語入力にしている時に押しますと「大文字」と「小文字」の切り替えができるというものでした。
    「fire HDX 8.9」以外のタブレットで試していないので、他のタブレットではどうかは分かりませんが、「fire HDX 8.9」では上記の通りです。管理人さんのお蔭で本当に助かりました m(__)m

    普段は、パソコンで普通に使っている「半角 / 全角(日本語・英語 切り替え)」キーですが、いざ、このように使えない状態になりますと、その役割のデカさ(重要性)が嫌と言うほど分かりました (^_^;)

    重ね重ね、管理人さんには感謝しております m(__)m
    管理人さん、本当にありがとうございます (^-^

  4. 名前:追記です♪ : 投稿日:2015/09/30 01:54

    管理人さん、何度もすみません。

    「fire HDX 8.9」の日本語入力の文字変換があまり良くなく、とても使い難いため、あれから「ATOK (日本語入力システム)」アプリを購入しました(1,543円)。「ATOK (日本語入力システム)」を酷評される方もいますが、アマゾンの日本語入力よりも遥かに良いですので、私は助かっています。

    問題は、「ATOK (日本語入力システム)」をインストールしますと、肝心の「半角 / 全角(日本語・英語 切り替え)」が [SHIFT]+[スペース] で機能しなくなりまして、一瞬、焦りました・・。
    しかし「ATOK (日本語入力システム)」では、「半角 / 全角(日本語・英語 切り替え)」が [Alt]+[スペース] でできました。「ATOK (日本語入力システム)」の場合、「半角 / 全角(日本語・英語 切り替え)」は [Alt]+[スペース] で行なうようです。メーカーによって、全然違うんですね・・(汗)

    私の使用している Bluetooth キーボードは、マイクロソフトの 「Universal Mobile Keyboard」です。
    どなたかのご参考になって頂ければと思います m(__)m

  5. 名前:管理人 : 投稿日:2015/09/30 02:35

    コメントありがとうございます。

    >メーカーによって、全然違うんですね・・(汗)
    Androidの場合は、アプリ側(IME側)での実装なので、アプリに依存するとかだった記憶があります。


    少し手持ちのBluetooth キーボードで試してみたのですが、相変わらずAndroidもiOSも混とんとしている感じはします。英語圏以外はしりませんみたいな雰囲気が個人的にはします。

    ■iOS
    http://qa.elecom.co.jp/faq_detail.html?id=4608

    「Command+Space」から「Ctrl+Space」にiOS9から変更されてました

    ■Android
    らくらくスマホ(初代)
    なぜか、うまく切り替えできませんでした・・・。

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。