2011年12月12日月曜日

Bluetoothキーボードの何か補足

も少し詳しく。
logcatで、件のキーボードを認識する過程をログると、
I/EventHub( 1158): New keyboard: device->id=0x10004 devname='TK-FBM023 Series' propName='hw.keyboards.65540.devname' keylayout='/system/usr/keylayout/TK-FBM023_Series.kl'
I/EventHub( 1158): New device: path=/dev/input/event6 name=TK-FBM023 Series id=0x10004 (of 0x5) index=5 fd=175 classes=0x3
I/InputReader( 1158): Device added: id=0x10004, name=TK-FBM023 Series, sources=00000101
こんな感じになっている。
この中の、devname= で示される名称が、キーレイアウトとキーマップのベースファイル名になる。
ここでは、
devname='TK-FBM023 Series'
となっているので、スペースを _ に変換して、
TK-FBM023_Series.kl
TK-FBM023_Series.kcm.bin
Androidは上記ファイルを探しに行く。見つからなければデフォルトのqwertyを使用する。
他のキーボードでもdevname.kl, devname.kcm.bin を用意すればおk。

ちなみに、klは単なるテキストだけど、kcm.binはバイナリ。
qwerty.kcm.binコピーして、中身をバイナリエディタで加工してもいいし、Androidのソースからビルドすることもできる。
私はソースからビルドした。



klの書き方なんかは検索すればいくらでも情報は出てくるので省略。
上手くklを書けば、メディアキー(曲送り、再生停止)やメニュー、ホームなんかも割り当てられたりするので、個別にカスタマイズしてもいいかもね。

0 件のコメント:

コメントを投稿