Bluetoothキーボードを買った 2


前回のエントリでDeleteキーが認識されない現象をついに克服した!



ということで、Galaxy S2お持ちのみなさんは、
安いお値段で折りたたみBluetoothキーボードをつかってみましょう!
※今回紹介するキーボードは非対応機種となるので、自己責任ですがw




まず、僕が買ったキーボードはこれ。TK-FBP019E
iPhone/iPad/Mac向けBluetooth(R)折りたたみキーボード - TK-FBP019EBK
iPhoneiPadなどに最適な英語配列を採用した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


[GalaxyS] - hibivi 日々マナビ


  • 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を調べて、いろいろ好きなようにできます!

使用感

悪くないです。たまにShift押しながらの操作が反応鈍いくらい。


折りたたみなので便利。


ここを引き抜くと


じゃーん


スタンドの出現!


SGS2セット!


これが問題のDeleteキー


専用ポーチ付き