Mono Works

チラシのすきま

Gemini PDAのキーをカスタマイズ

Gemini PDA購入から1ヶ月と少し、これまでキー配置をいじらずに使ってきて、デフォルトのキー配置で慣れつつありますが、さすがに長音符をワンキーで入力したくなってきたので、アプリを作って入れ替えてみました。

参考にさせていただいたのは、公式サイトこばこさんの記事8796さんの記事8796さんが公開されてるソースです。

更新履歴

変更パターンを2種類に増やしたものを作成したので、最新版は、こちらの記事をご覧下さい。

アプリの作成

アプリ作成には、IntelliJ IDEA Community Edition 2018.2.3 x64を使用しました。

参考:IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains

IntelliJ IDEAでプロジェクト作成

  1. Create New Projectで新規にアプリを作成
  2. Androidプロジェクトを選択し、適当なアプリ名とドメインを入力して、Next
  3. ターゲットはGemini PDAなので、API25をminimum SDKに指定して、Next
  4. 画面表示は無いので、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右ShiftFnに変更したものが理想的だったので、キーボードレイアウトファイルは、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作成

  1. Build APK(s)して出来上がったapkファイルをGemini PDAにコピー
  2. 開発者モード => セキュリティ -> 提供元不明のアプリ をON
  3. apkのインストール
  4. 設定 -> 言語と入力 -> 物理キーボード -> 《使ってるIME》 を開き、キーボードレイアウト一覧からres/values/strings.xmlに記載した名称のレイアウトを選択

デバッグ用apkで問題なければ、Generate Signed APKで署名入りのリリース用apkを作成します。

作成したアプリで変更されるキー

最終的に作成したアプリで何が変わるのか

  • backslash(\) の入れ替え
  • M の右に COMMAPERIOD を配置( [M] , . )
  • Space の右に DPAD_LEFTDPAD_UP を配置( [Space] ← ↑ ↓ → )
  • Alt + 6 ~ 0F6 ~ F10 を割り当て(日本語入力中にF7で全角カナ変換とか)
  • Alt + ←戻るAlt + →進む を割り当て
  • 右ShiftFnを割り当て(今回作成したアプリオリジナルの部分)

作成物

追記:2018/09/20

変更パターンを2種類に増やしたものを作成したので、最新版は、こちらの記事をご覧下さい。

永遠のベータapk

geminikeyremap-beta-20180917.apk

ソースコード

pporoch/gemini-key-remap: Change kcm file for Gemini PDA

おしまい

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内