Day Gemini p d a Linux

Gemini PDAのキーボード配列について

Gemini PDAのキーボード配列について

Gemini PDAのキーボード配列について

人はなぜキーボード配列にこだわりがあるのか

Gemini PDAのキー配列が気に食わない!!変更したい!! なぜそこまでこだわってしまうのか。 そこに自分の気に入らないキー配列のキーボードがあるからかもしれません。

ただし、ベストな方法はFn同時押しに身体を慣れさせることではないでしょうか。 キーボードの印字と違うキーを入力し続けるのは気づかないうちに精神を蝕みます(?)

キーマップの扱い

androidのキーマップの扱いはどうなってるのか。 こちらは公式先人 たちの偉大な功績を参考にします。

たぶんこんな感じらしい

  • キーレイアウト(.kl)ファイルはキー配置を定義するファイル
  • キーキャラクターマップ(.kcm)ファイルは押されたキーによって何のキーを入力するかを定義するファイル

ファイルの関係性はたぶんこんな感じ

  • /system/usr/keylayout/Geniric.kl はキー配置で最も優先される
  • /data/system/devices/keychars/Generic.kcmはキー配置で最も優先されるわけではない

また、キーキャラクターマップはandroid4.*から、独自に定義したものが有効になるようになっているそうです。そのため、各IMEIやアプリ等で独自に定義されている場合があるようです。 アプリ上で独自に定義したキーキャラクターマップ同士の優先度は不明ですが、アプリ上で独自に定義したキーキャラクターマップは/data/system/devices/keychars/Generic.kcm よりも優先されるようです。

ここまでわかれば、後は確認のみ。

Geminiキーボードの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.klkey 40 APOSTROPHE と割り当てられています。

kcmを自分で定義すればOK

ただしアプリで導入したものが優先されるようです。(優先度変えられる方法を知らないだけかもしれませんが…) 単純にCTRLSHIFT を入れ替えるようなことであれば /system/usr/keylayout/Geniric.kl を書き換えるほうが楽そうですが、同時押しの定義を行ったりroot取得無しでキーボード配列を変更する場合にはkcmを自分で定義するのが良さそうです。

※おそらくkcmの定義を変更する方法でもっとも簡単なのは、自分でお好みに定義したkcmファイルを優先される位置に置けばよさそう。(Geminiキーボード.apk を取得して展開し好みで必要なkcmファイルを書き換えてapkファイルに再構築すれのもいけそうだけど…ほにゃらら)

 

comments powered by Disqus