Gemini PDA購入から1ヶ月と少し、これまでキー配置をいじらずに使ってきて、デフォルトのキー配置で慣れつつありますが、さすがに長音符をワンキーで入力したくなってきたので、アプリを作って入れ替えてみました。
参考にさせていただいたのは、公式サイト、 こばこさんの記事、 8796さんの記事、 8796さんが公開されてるソースです。
- InputManager | Android Developers
- Gemini PDAのキーボードをカスタマイズする(root権限不要): こばこのひみつ
- Gemini PDA用User-installable keymapsのまとめ : 8796.jp管理日誌
- 8796n/GeminiKCM: User-installable keymaps test for Gemini PDA
更新履歴
変更パターンを2種類に増やしたものを作成したので、最新版は、こちらの記事をご覧下さい。
アプリの作成
アプリ作成には、IntelliJ IDEA Community Edition 2018.2.3 x64を使用しました。
参考:IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains
IntelliJ IDEAでプロジェクト作成
- Create New Projectで新規にアプリを作成
- Androidプロジェクトを選択し、適当なアプリ名とドメインを入力して、Next
- ターゲットはGemini PDAなので、API25をminimum SDKに指定して、Next
- 画面表示は無いので、Add No Activityを選択して、Next -> Finish
Manifestに宣言
作成したプロジェクトのAndroidManifest.xml
に公式サイトのreceiver宣言のサンプルをコピーして、applicationタグ内に貼り付け、不要な宣言を削除します。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.co.monoworks.geminikeyremap">
<application android:label="@string/app_name">
<receiver android:name="jp.co.monoworks.geminikeyremap.InputDeviceReceiver"
android:label="@string/keyboard_layouts_label">
<intent-filter>
<action android:name="android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS" />
</intent-filter>
<meta-data android:name="android.hardware.input.metadata.KEYBOARD_LAYOUTS"
android:resource="@xml/keyboard_layouts" />
</receiver>
</application>
</manifest>
keyboard_layouts.xmlの作成
レシーバーで指定した@xml/keyboard_layoutsというリソースについて、res/xml/keyboard_layouts.xml
ファイルを作成して、公式サイトのkeyboard-layouts宣言のサンプルをコピーして貼り付け、nameやlabelを適当に書き換えます。
<?xml version="1.0" encoding="utf-8"?>
<keyboard-layouts xmlns:android="http://schemas.android.com/apk/res/android">
<keyboard-layout android:name="keyboard_layout_remap_gemini_us"
android:label="@string/keyboard_layout_remap_gemini_us"
android:keyboardLayout="@raw/keyboard_layout_remap_gemini_us" />
</keyboard-layouts>
strings.xmlに表示名称を追加
作成したプロジェクトのres/values/strings.xml
を開くと、app nameだけ宣言されているので、未宣言のものを追加。keyboard_layout_remap_gemini_usには、Andoridの設定から物理キーボードのレイアウト一覧を選ぶときに何という名前で表示するかを、keyboard_layouts_labelには、そのレイアウトの説明を指定します。
<resources>
<string name="app_name">Gemini Key Remap</string>
<string name="keyboard_layouts_label">Change kcm file for Gemini PDA</string>
<string name="keyboard_layout_remap_gemini_us">Gemini PDA US Key Remap</string>
</resources>
キーボードレイアウトファイルの追加
8796さん作 GeminiKCM の US 06+04 の右Shift
をFn
に変更したものが理想的だったので、キーボードレイアウトファイルは、8796さんのソースからgemini_us_remap_06_04.kcmを流用させていただき、kcmファイルを作成しました。変更箇所は、以下のとおり。
type OVERLAY
map key 54 META_LEFT(変更前) -> FUNCTION(変更後)
map key 51 DPAD_LEFT
...
変更を加えたkcmファイルをres/raw/keyboard_layout_remap_gemini_us.kcm
に配置。
apk作成
Build APK(s)
して出来上がったapkファイルをGemini PDAにコピー- 開発者モード => セキュリティ -> 提供元不明のアプリ をON
- apkのインストール
- 設定 -> 言語と入力 -> 物理キーボード -> 《使ってるIME》 を開き、キーボードレイアウト一覧から
res/values/strings.xml
に記載した名称のレイアウトを選択
デバッグ用apkで問題なければ、Generate Signed APK
で署名入りのリリース用apkを作成します。
作成したアプリで変更されるキー
最終的に作成したアプリで何が変わるのか
- backslash(\) と - の入れ替え
- M の右に COMMA、 PERIOD を配置( [M] , . )
- Space の右に DPAD_LEFT、 DPAD_UP を配置( [Space] ← ↑ ↓ → )
- Alt + 6 ~ 0 に F6 ~ F10 を割り当て(日本語入力中にF7で全角カナ変換とか)
- Alt + ← に 戻る、 Alt + → に 進む を割り当て
- 右Shift に Fnを割り当て(今回作成したアプリオリジナルの部分)
作成物
追記:2018/09/20
変更パターンを2種類に増やしたものを作成したので、最新版は、こちらの記事をご覧下さい。
永遠のベータapk
geminikeyremap-beta-20180917.apk
ソースコード
pporoch/gemini-key-remap: Change kcm file for Gemini PDA
おしまい
コメント
コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)