Gemini PDA USキーボード版ですけれど、大変気に入って毎日使っています。
ちょっと気になるのは、ハイフンや長音をFn+oで打鍵しなければ入らないのが面倒に感じることです。
もちろん、root権限付きのファームを書き込めば、keylayoutも、keycharsも好きなように書き換えできるわけですけれど、最近のAndroid端末はrootを取らなくても普通に使えることが多いので、root権限なしの標準ファームでいいやと思っているところです。
さて、非rootでキーボードのキーカスタマイズする方法として、Andorid4.1から、User-installable keymapsという仕組みでユーザーがインストール可能なキーボードマップをサポートするようになりました。日本語109キーボードを外付けで使うときに便利になったあの機能です。
この機能を利用して、Gemini PDAのキーの入れ替えができるはずです。アプリを作る必要はありますけれど、y10gさんがそのものずばりのソースを公開してくれていますので、これを参考にすればなんとかなるかもしれません。
公式のデベロッパーガイドでも、丁寧に説明があります。よくわかりませんけれど、たぶんなんとかなるでしょう。
というわけで、まずはAndroidの開発環境を作ってみます。今はAndroid Studioっていうのがあるのか、初めてダウンロードして入れてみます。

インストールが終わると、早速作ってみる感じです。

なんだかわかりませんけれど、初めてのアプリの作成ガイドの通りにやってみます。

チュートリアルが分かりやすいです。アプリの名前は「chgkey1」とかにして試してみるかな。
自分のドメインを入れます。公開しなければ、なんか適当なユニーク文字列でもいいかもしれません。(このドメインはアプリの特定のために、後でドット区切りを逆の順番に並び変えて記述します)

4.1以降の機能を使うし、はなからGemini PDA用です。ヌガー以降にしておこう。Andorid対象バージョンは7以降を選びます。

何も考えずに表示されたEmpty Activityのまま次へ進みます。Finishボタンを押して終了です。
ふむふむ。あっという間にhello worldアプリが一行のコードも書かずにできました。すごいな。Javaを全く書かなかったぞ。
さて、キーボードのキー入れ替えのアプリを作ります。hello worldアプリにちょっと手を加えるだけですみます。
y10gさんありがとうございます!感謝です。
いじるのは、
AndroidManifest.xml
と、
res/values/strings.xml
です。
追加したのは、
res/values-ja/strings.xml
res/xml/keyboard_layouts.xml
res/raw/chgkey1.kcm
です。
javaのコードは一行も書きません。xmlいじったのと、キーのキャラクター指定ファイルを置いただけなのです。
なんて簡単なんだ。
アプリ自体は自動生成されたHello World表示アプリですけれど、肝はユーザー作成のキーボードレイウトファイルを使えるようにしてインストールする指定をXMLで追記していることです。これだけで、サンプルアプリをインストールすれば標準の設定画面から物理キーボードのレイアウト選択画面で選べるようになるという寸法です。
まず、マニフェストに宣言します。公式デベロッパーサイトの該当ページのサンプルコードや、y10gさんのソースの通りです。 applicationタグの下に、receiverタグをサンプル通りに挿入すればおっけーです。

レシーバーで指定した@xml/keyboard_layoutsというリソースをresフォルダのxmlの下に放り込みます。
xmlフォルダごとファイルコピーすると、Android Studioから自動的に認識されました。

つぎに、自分が放り込むキーボードレイアウトに名前を付けます。Andorid標準の設定アプリで、物理キーボードのレイアウト一覧を選ぶときに何という名前で表示するかの指定です。

res/values/strings.xmlはアプリの名前だけ書かれて自動生成されていました。ここに行追加します。

日本語で表示したい場合に、
res/values-ja/strings.xml
をコピーします。Android Studio上でヒントから編集していっても作れます。
あとは、肝心のキーボードレイアウトファイルです。
これは事前に作っておいたのを、
res/raw/chgkey1.kcm
というファイルでコピーしました。
ぼくはUSキーボードモデルです。このkcmもUSキーボード用で、一か所だけ「-」と「\」を入れ替える単純なものです。
日本語キーボードモデルは持っていないので作っていません。
Geminiキーボードアプリを、たぶんESファイルエクスプローラーあたりでapkにして、拡張子をzipに変えて、keyboard_layout_japanese_gemini.kcmあたりを抜き出してそれをカスタマイズすればいいんじゃないかと想像します。
ともかく、ぼくはよく使う長音を1キーで打ちたいために、バックスラッシュキーを押せばハイフンが出る、Fn+oを押せばバックスラッシュが出るという単純なキーの入れ替えだけのkcmファイルとしました。
ほかのキーレイアウトにしたときは、kcmファイルだけ書き換えて入れてビルドすればいいということです。
klじゃなくてkcmなので、装飾キーの入れ替えは制限がありま す。klはroot取って変更ですね。
さて、ビルドしてみます。

ビルド通りました。

デバッグ用のapkを作ってみます。
できました。なにそれこわい。
Dropbox経由でGemini PDAに入れます。提供元不明のあぶないアプリです。

セキュリティ設定を変更しないとインストールできません。やばいもんだな。後で設定戻しましょう。

特別なアクセス許可を必要としないそうです。

インストールできてしまいました。やばいね。

実行する必要はありません。キーボードレイアウトをインストールすることだけが目的のアプリなので。実行してもHello worldが表示されるだけですけれど。

設定から「言語と入力」「物理キーボード」を開きます。
ぼくはATOKを使っているのでタップします。キーボードレイアウトの一覧がずらずら出てきます。

でたー。やったー。

これでバックスラッシュとハイフンを入れ替えたキーボードになりました。
早速Jota+などで試してみます。

うまくいきました。
配布するapkを作るためには、署名してリリース用のapkを作るみたいです。ドメインや名前、住所、パスワードなどを入れ、署名してリリースapkを作ってみます。
ふむふむ、
できました。
apkです。
「chgkey-test20180601.apk」をダウンロード
ソースです。
「chgkey1_20180601.zip」をダウンロード
というわけで、また一つ快適になりました。
最近のコメント