Bluetoothキーボードを買った 2
前回のエントリでDeleteキーが認識されない現象をついに克服した!
ということで、Galaxy S2お持ちのみなさんは、
安いお値段で折りたたみBluetoothキーボードをつかってみましょう!
※今回紹介するキーボードは非対応機種となるので、自己責任ですがw
- Bluetoothキーボード
まず、僕が買ったキーボードはこれ。TK-FBP019E
iPhone/iPad/Mac向けBluetooth(R)折りたたみキーボード - TK-FBP019EBK
>iPhoneやiPadなどに最適な英語配列を採用したBluetooth®キーボードです。
>本製品はHIDプロファイルのみに対応しており、SPPプロファイルには対応していません。
つまり普通のAndroidではもちろん認識しない。。。
が、僕のGalaxy S2(以下SGS2)はなんとHID対応なので、ドキドキしながら買ってみた次第。(安いから。)
そしたら、Delete認識しない罠だったんだけど。
ちなみに、ヨドバシで6500円だった。
Android対応のAndroid対応Bluetooth(R)折りたたみキーボード - TK-FBP018BKは、
なんと一万円する。高い。無理。なんとかなるだろ。
対処法
- キーバインドの設定を変える
どうすればいいか考えてたところ、あることに気付いた。
Deleteキーを押すと、SGS2のMenuボタンとBackボタンのLEDが光ってる。
→つまり、認識はしているが、適切なキーバインドが割当られていない。
標準キーバインドは、以下のファイルに設定されている。
/system/usr/keylayout/qwerty.kl
また、今回は外部キーボードのキーバインドを変更するので
/system/usr/keylayout/Broudcom_Bluetooth_HID.kl
というファイルを編集する必要がある。(物によってもちろんファイル名はちがってくるが)
さて・・・気付いたと思いますが
/system以下をいじるということは・・・Root化が必要です、ね。
- SGS2root化
root化の説明は先人たちの記事を見てください。保証受けれなくなりますけど。
ググるといっぱいでるので、参考にしてください。
僕はガジェットおたくではないので、そこまでroot化とかに詳しくないんですが、
SGS2の場合はSuper one Clickなどもつかえないみたいですね。
だからカスタムROMぶっこんだりが主流っぽい。
でも、そこまでしたくなくて、標準カーネルのままにしておきたかったので
http://armalitexyz.jp/archive/2011/09/09/2011090901.php/
ここを参考にしました。
- ADB shellをいれる
ADB shellってのはAndroid開発用のツールですね。PCから端末操作できる。
PCにADBshellを入れます。
こういう記事を参考にいれてください。
Android SDKのセットアップとADB Shellの起動について – blok
- ADB shellを使ってファイルバックアップ
こういう感じでPCにファイルをバックアップしてると吉です。
$ adb pull /system/usr/keylayout/Broadcom_Bluetooth_HID.kl Broadcom_Bluetooth_HID.kl
SGS2のファイルエクスプローラでバックアップとってもいいですが。
- キーバインドファイルの編集方法
キーバインドのファイルを編集します。(Broadcom_Bluetooth_HID.kl )
ファイルの編集方法は二つあります
-
- PCから流し込む
adb pushコマンドを使います。
PCでファイル編集→Pushで流し込み
だからPCでファイルの編集が可能です。
$ adb remount ←書込み可能にするためremount $ adb push Broadcom_Bluetooth_HID.kl /system/usr/keylayout/Broadcom_Bluetooth_HID.kl
-
- adb shellでSGS2にログインして書く
viコマンドを使って直接編集、保存 の流れです。
※ちなみに、標準カーネルの場合は
1. adb shell コマンドをつかって端末にログイン
2. adbにroot権限付与(端末の画面に確認ダイヤログが表示される
とやる必要があります。
(標準カーネルroot化の場合はpushではいまのところできないかな)
/system以下は読み取り専用でMountされているため、remountして書込み可能にします
$ mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
- キーバインドファイルの編集する
ファイルの中身はこんなかんじ。
key 150 EXPLORER key 139 MENU WAKE_DROPPED key 102 HOME WAKE key 158 BACK WAKE_DROPPED key 217 SEARCH WAKE_DROPPED key 230 SOFT_RIGHT WAKE key 60 HOME key 107 ENDCALL WAKE_DROPPED key 62 ENDCALL WAKE_DROPPED
・key xxx :SCANCODEと呼ばれるキーボードから送信される信号コード
・WAKE:押すと画面が光る(画面スリープ解除)
・HOME、MENUなど:ボタン割当
ふつーはDeleteボタンはSCANCODE 15だったりするんですけど
key 15 DEL と設定しても動作せず。
キーイベントを調べてみました。
https://market.android.com/details?id=aws.apps.keyeventdisplay
これで、キー入力した際のSCANCODEがわかります。
(今回、Deleteボタンは 111 でした。謎)
key 111 DEL という行を付け足して、完了!
あとは上記編集方法にあるとおり、流し込むなり上書き保存をして、再起動しましょう。
もちろん、それ以外にもキーイベントでSCANCODEを調べて、いろいろ好きなようにできます!