主にandroidとかのメモ

Android4.1で日本語配列キーボード(USB/Bluetooth)を使えるようにする

@youtrn_redo先生の記事を元に色々実験。
http://greety.sakura.ne.jp/redo/2012/07/jb.html

ざっくり要約すると。android4.1から、kcmファイルをリソースに持たせたアプリ入れると、OS側のキーボードレイアウト一覧に出してくれるよ!って事らしい。
(kcmだけでklはだめなのね)

でまあ、完成したものをマーケットに上げました。

日本語106/109キーボードレイアウト
https://play.google.com/store/apps/details?id=net.init0.android.keyboard109

動作確認済機種:
・Nexus7(JB)
・GalaxyNexus(JB)

接続確認済キーボード:
[Bluetooth]ポケモンキーボード(Nintendo Wireless Keyboard)
[USB]その辺にあったUSBキーボード(^^;
※Appleキーボードも動作報告を頂いています

備考:
・テンキー追加してないです(手持ちに無いので、いりますかね?)
・ポケモンキーボード用に「家マーク」キーに追加でHOMEボタン割り当ててます
(他のキーボードで変な動作しないことを祈る)

以下、記録。

english_usなkeymap書き換えて日本語配列キーボードに対応させました。

元ファイル
/frameworks/base/packages/InputDevices/res/raw
keyboard_layout_english_us.kcm

変更点(①~⑪は比較して「?」となったポイント)

・key 2
shift: ‘@’ → ‘”‘

・key 6
shift: ‘^’ → ‘&’

・key 7
shift: ‘&’ → ‘\”

・key 8
shift: ‘*’ → ‘(‘

・key 9
shift: ‘(‘ → ‘)’

・key 0
shift: ‘)’ → none

・key MINUS
shift: ‘_’ → ‘=’

①EQUALSが余分
②’^’がない
⇒英語キーボードのEQUALSキーが日本語キーボードの’^’の為
key EQUALS
label: ‘=’ → ‘^’
base: ‘=’ → ‘^’
shift: ‘+’ → ‘~’
に変更

③\がない(一見BACKSLASHがそのまま使えそうだが、キーコードが違うので)
map key 124 YEN

key YEN {
label: ‘\u00a5’
base: ‘\u00a5’
shift: ‘|’
}
を追加

2列目
④’@’が無い
map key 26 AT
key AT {
label: ‘@’
base: ‘@’
shift: ‘`’
}
を追加

⑤RIGHT_BRACKETが余分にある
⇒⑧でつかうので放置
⑥BACKSLASHが余分にある
⇒⑩でつかうので放置

3列目

key SEMICOLON
shift: ‘:’ → ‘+’

⑦’:’がない
⇒⑨で解決

⑧’}’がない
⇒⑤RIGHT_BRACKETがそのまま使えるので放置。
⇒キーコードが違うので、
map key 43 RIGHT_BRACKET
を追加

⑨APOSTROPHEが余分
⇒コロンの所なので書き換え
key APOSTROPHE {
label: ‘\” → ‘:’
base: ‘\” → ‘:’
shift: ‘”‘ → ‘*’
}

4列目
⑩’\'(shiht:’_’)がない。
⇒BACKSLASHを修正
key BACKSLASH {
shift: ‘|’ → ‘_’
}
⇒キーコードが違うので、
map key 89 BACKSLASH
を追加


⇒キーコードが違うので、
map key 27 LEFT_BRACKET
を追加

 

コメント (6)
  1. ribbon より:

    googleplayにあるものを使っています。リュウドのbluetoothキーボードで使えています。
    1つ確認ですが、ソースを公開される予定はあるでしょうか。少し手を入れて使いたいので。

    1. ta9mar より:

      公開予定はなかったのですが、検討しますね

      1. ribbon より:

        ありがとうございます。ご検討をお願いします。
        具体的には、英語配列にはあるが、日本語配列がない、DVORAK配列を
        追加しようと思っています。英語配列のものを日本語化するよりも、すでに
        日本語化されているものを変換する方が楽そうなので。

        また、最近更新され、マップが追加されたことを確認しました。
        新しいものについてはこれから試してみようと思います。

  2. Atreide より:

    わたくしもソース公開希望致します。
    SONYのCECH-ZKB1JPというPS3ようのBluetooth キーボードをNexus7で使っているのですが、如何せんHOME, END, PAGE UP, PAGE DOWN キーがなく、その代わりにFn押しながらF1~F12キーを押下するとプレステのコントローラーのボタンに対応しているという・・・なのでマッピングを変更してHOME, END, PAGE UP, PAGE DOWNとして認識させたいと思ってます。

    CECH-ZKB1JPってトラックポイントが付いているのでマウス要らないんですよ~。これが凄く便利なんです。