Gemini PDAのキー配列が気に食わない!!変更したい!! なぜそこまでこだわってしまうのか。 そこに自分の気に入らないキー配列のキーボードがあるからかもしれません。
ただし、ベストな方法はFn同時押しに身体を慣れさせることではないでしょうか。 キーボードの印字と違うキーを入力し続けるのは気づかないうちに精神を蝕みます(?)
androidのキーマップの扱いはどうなってるのか。 こちらは公式 と先人 たちの偉大な功績を参考にします。
たぶんこんな感じらしい
ファイルの関係性はたぶんこんな感じ
/system/usr/keylayout/Geniric.kl
はキー配置で最も優先される/data/system/devices/keychars/Generic.kcm
はキー配置で最も優先されるわけではないまた、キーキャラクターマップはandroid4.*から、独自に定義したものが有効になるようになっているそうです。そのため、各IMEIやアプリ等で独自に定義されている場合があるようです。
アプリ上で独自に定義したキーキャラクターマップ同士の優先度は不明ですが、アプリ上で独自に定義したキーキャラクターマップは/data/system/devices/keychars/Generic.kcm
よりも優先されるようです。
ここまでわかれば、後は確認のみ。
root取得環境であれば、あんな方法やこんな方法でapkファイルを取得できます。
目標はGeminiキーボード
です。
まずは、apkファイルを取得しコンピュータへapkファイルを転送します。
apkファイルは、展開するだけならば拡張子をzip変えればOK。
$ mv Geminiキーボード_1.0.21.apk Geminiキーボード_1.0.21.zip $ unzip Geminiキーボード_1.0.21.zip
解凍後に中を除くと、こんなファイルが…
$ cd Geminiキーボード_1.0.21 $ cd res/raw $ ls | grep kcm keyboard_layout_arabic_eng_gemini.kcm keyboard_layout_arabic_gemini.kcm keyboard_layout_brazilian_gemini.kcm keyboard_layout_chinese_eng_gemini.kcm keyboard_layout_chinese_gemini.kcm keyboard_layout_croatian_and_slovenian_gemini.kcm keyboard_layout_czech_qwerty_gemini.kcm keyboard_layout_czech_qwertz_gemini.kcm keyboard_layout_danish_gemini.kcm keyboard_layout_dvorak_gemini.kcm keyboard_layout_english_uk_gemini.kcm keyboard_layout_english_us_intl_gemini.kcm keyboard_layout_finnish_gemini.kcm keyboard_layout_french_gemini.kcm keyboard_layout_german_gemini.kcm keyboard_layout_greek_eng_gemini.kcm keyboard_layout_greek_gemini.kcm keyboard_layout_hebrew_eng_gemini.kcm keyboard_layout_hebrew_gemini.kcm keyboard_layout_hungarian_gemini.kcm keyboard_layout_icelandic_gemini.kcm keyboard_layout_italian_gemini.kcm keyboard_layout_japanese_eng_gemini.kcm keyboard_layout_japanese_gemini.kcm keyboard_layout_japanese_gemini_old.kcm keyboard_layout_korean_eng_gemini.kcm keyboard_layout_korean_gemini.kcm keyboard_layout_norwegian_gemini.kcm keyboard_layout_polish_gemini.kcm keyboard_layout_portuguese_gemini.kcm keyboard_layout_russian_eng_gemini.kcm keyboard_layout_russian_gemini.kcm keyboard_layout_russian_gemini_old.kcm keyboard_layout_spanish_gemini.kcm keyboard_layout_swedish_gemini.kcm keyboard_layout_swiss_gemini.kcm keyboard_layout_thai_eng_gemini.kcm keyboard_layout_thai_eng_old.kcm keyboard_layout_thai_gemini.kcm keyboard_layout_thai_old.kcm
keyboard_layout_english_us_intl_gemini.kcm
を開いてみます。
O
と\
のところだけ抜粋です。
なるほどなるほど…
~~~~ key O { label: 'O' base: 'o' shift, capslock: 'O' fn: '\\' alt: '\u00f3' shift+alt, capslock+alt: '\u00d3' } ~~~~ key APOSTROPHE { label: '-' base: '-' shift: '|' fn: ':' alt: '\u00ac' shift+alt: '\u00a6' } ~~~~
※英字キーボードの\
は /system/usr/keylayout/Geniric.kl
でkey 40 APOSTROPHE
と割り当てられています。
ただしアプリで導入したものが優先されるようです。(優先度変えられる方法を知らないだけかもしれませんが…)
単純にCTRL
や SHIFT
を入れ替えるようなことであれば /system/usr/keylayout/Geniric.kl
を書き換えるほうが楽そうですが、同時押しの定義を行ったりroot取得無しでキーボード配列を変更する場合にはkcmを自分で定義するのが良さそうです。
※おそらくkcmの定義を変更する方法でもっとも簡単なのは、自分でお好みに定義したkcmファイルを優先される位置に置けばよさそう。(Geminiキーボード.apk
を取得して展開し好みで必要なkcmファイルを書き換えてapkファイルに再構築すれのもいけそうだけど…ほにゃらら)