ニンテンドーワイヤレスキーボードをアンドロイド携帯で使ってみた。
(2011.5.8色々追記)
HTC Desire + Cyanogenmod 7.0.2.1 でニンテンドーワイヤレスキーボード(ポケモンタイピングDS付属のキーボードね)を利用してます。
そのままではUSキーボードとして認識されます。また、端末を横にして使うと、カーソルキーの方向が90度ズレちゃう。使い勝手が良くないので、1.日本語キーボードとして認識させる 2.横画面でのカーソルキーの向きを正しくする の2点を改善してみました。
HTC desire(+Bluetooth HID プロファイル対応のROM)で使ってるけど、ほかのアンドロイド携帯でも、root化済みで、キーボードが認識さえすれば以下の方法でできるはず。
(手始めにスキャンコードを調べてみたら↓こんなかんじ。赤文字の下段はFn同時押し時。Fnと数字キー・Control・Altの同時押しにも機能が割り振れますな。)
https://groups.google.com/group/android-group-japan/browse_thread/thread/35eec4f1e19c898f?hl=ja
http://www.kandroid.org/android_pdk/keymaps_keyboard_input.html
http://developer.android.com/reference/android/view/KeyEvent.html
を参考にして、Key Layout Mapファイル(Nintendo_Wireless_Keyboard.kl)を作成し、各キーに機能を割り振ります。中身はUTF-8なテキストファイルですんで、↓のように自分好みの設定をエディタでちまちまと書いてやればよろしい。
key 41 SWITCH_CHARSET key 2 1 key 3 2 key 4 3 key 5 4 key 6 5 key 7 6 key 8 7 key 9 8 key 10 9 key 11 0 key 12 MINUS key 13 EQUALS key 124 BACKSLASH key 14 DEL key 15 TAB key 16 Q key 17 W key 18 E key 19 R key 20 T key 21 Y key 22 U key 23 I key 24 O key 25 P key 26 AT key 27 LEFT_BRACKET key 28 ENTER #key 58 CAPS_LOCK key 30 A key 31 S key 32 D key 33 F key 34 G key 35 H key 36 J key 37 K key 38 L key 39 SEMICOLON key 40 STAR key 43 RIGHT_BRACKET key 42 SHIFT_LEFT key 44 Z key 45 X key 46 C key 47 V key 48 B key 49 N key 50 M key 51 COMMA key 52 PERIOD key 53 SLASH key 89 APOSTROPHE key 54 SHIFT_RIGHT #key 29 CTRL_LEFT key 29 MENU WAKE_DROPPED key 125 HOME WAKE key 56 ALT_LEFT key 57 SPACE # landscape key 103 DPAD_RIGHT WAKE_DROPPED key 105 DPAD_UP WAKE_DROPPED key 106 DPAD_DOWN WAKE_DROPPED key 108 DPAD_LEFT WAKE_DROPPED # portrait #key 103 DPAD_UP WAKE_DROPPED #key 105 DPAD_LEFT WAKE_DROPPED #key 106 DPAD_RIGHT WAKE_DROPPED #key 108 DPAD_DOWN WAKE_DROPPED # with Fn key #key 1 ESCAPE #key 59 F1 #key 60 F2 #key 61 F3 key 61 SEARCH #key 62 F4 #key 63 F5 #key 64 F6 #key 65 F7 #key 66 F8 #key 67 F9 #key 68 F10 #key 111 FORWARD_DEL key 114 VOLUME_DOWN key 115 VOLUME_UP #key 102 MOVE_HOME key 104 PAGE_UP key 109 PAGE_DOWN #key 107 MOVE_END
ほぼキートップの刻印どおりのキー配置だけど、Gingerbreadで非対応の機能があるからそんなキーは無効にしてます。
「半角全角」キーはSWITCH_CHARSET(文字種切替?)を割り振っているけどIMEが対応してないからいまんとこ無意味。
「CapsLock」キーは無効に(でもAndroidってShiftキー二度押しでCapslockされるらしいよ)。
「Control」キーはMenuキーを割り振り。
「家」キーはHOMEキーに(MENUでもいいかもって悩み中)。
「Esc」は無効にしてる(BACKにしようかな)。
Fn+数字は、Fn+3に検索キーを割り振ってる以外は無効化(MEDIA_NEXTやPLAY_PAUSEで音楽をコントロールしようかな)。
Fn+Controlで音量小、Fn+Altで音量大。
「Delete」「Home」「End」は無効。
http://www.binzume.net/diary/2010-12-26
からKey Character Mapファイル(QWERTY.kcm.bin)をお借りしてNintendo_Wireless_Keyboard.kcm.binにリネーム。(Shift+0で左括弧が入力されちゃうから暇なときに修正する予定)
それぞれ/system/usr/keylayoutと/system/usr/keycharsにコピー、パーミッションを適切に変更。
(詳細は上の各リンクを参考にしてくださいな)
これでアンドロイド携帯で日本語キーボードとして認識される。
カーソルキーは横画面で使うばあいに合わせてる。縦画面メインで使うならば、上記Key Layout Mapファイルの# landscapeより下の4行の頭に#を付け、#portraitより下の4行から#を取ってやればいいっすよ。
あとは日本語入力ソフトが物理キーにきちんと対応するのを待つばかり。Shiftキーでの範囲選択・Menu+Cでのコピー等・半角全角キーでの文字種切り替え・Tabキーで予測変換、などが揃って使えるようになるといいなあ。
openWnnがいまんとこベストかなー。BlueKeyboard JPも悪くなかったです(Pro版買いました)。