見出し画像

GK61 DSの親指シフトキーボード化



1. SKYLOONG GK61 (QMK&VIA)

2ヶ月ほど前にSKYLOONGのQMK/VIA対応のキーボードGK61 proをnicola化する記事を書きました。

実はGK61 proを注文した後にGK61 (QMK&VIA)が発売されていることを知り、ちょっと悔しい思いをしました。GK61 proにあるノブがないので、価格的に押さえられています。(※以下、GK61 DSと略)

GK61 proがQMK firmwareのキーボードリストに載っているのに対し、GK61 DSは見つかりませんでした。ところが、SKYLOONGのQMK firmware管理者のレポジトリにGK61 DSのブランチがありました。キーボードの定義をしているinfo.jsonを見ると、MCUは同じSTM32F103でした。RGB用のLSIがGK61 proと違うので、使っているMCUのGPIO端子が異なり、ファームウエアの互換性はありません。

2. GK61 DSの親指シフト化

GK61 proは既にQMK firmwareにありますから、\keyboards\skyloong\gk61 に \pro_ds をコピーしました。

直下にある ”info.json" は "keyboard.json" にファイル名を変えないとビルドエラーになりました。nicola部分は pro_ds\keymaps\nicola として追加しています。ノブに割り当てられていた1箇所だけ修正しています。詳細はソースコードで確認してください。

GK61 DS用のQMKファームについては、いくらSKYLOONGに問い合わせても無しのつぶてなので不安は残ります。心の準備が整わないうちにブツが届いてしまいました。

スイッチはGlacier Silent CuCl2を選択しました。サイレントとあるだけに打鍵音は本当に静かです。これなら日本的な環境の事務所で使っても、隣席とトラブルは少ないでしょう(笑)。

キーマップはGK61 proと同じにしています。やはり右下の制御キーは使わなくとも不便はありません。

GK61 DSのキーマップ

キーの配列はQMK nicolaで本質的なところではないので、NICOLA規格に関係なく○○式でもorzでも個人の嗜好で変更すれば良いと思います。

【ソースコード】の利用はあくまでも自己責任で行って下さい。レポジトリからコピーする場合はサブモジュールをクローンして下さい。

git clone --recursive https://github.com/ja7rhk/qmk_firmware_gk61_pro.git

3. ファームウエアの書き込み

QMKファームウエアのビルド環境の作り方はネットにいろいろ載っています。 私はWindows11にMsys2をインストールしてMSYS2 MINGW64でビルド、VSCodeでコードの編集をしています。

ビルドはQMKファームウエアのディレクトリに移動して、以下のmakeコマンドで書き込みまで進みます(:flashが無ければビルドのみ)。

$ make skyloong/gk61/pro_ds:nicola:flash

GK61 DSはESCキーを押しながらUSBを差し込むとBootloaderモードになります。:flash を付けるとビルド終了後に書き込み先のBootloaderを探しますから、ESCキーを押してUSBを差し込みます。GK61 proに較べるとBoot Deviceを認識するまで間が空きます。

最後にもう一度USBを挿抜するとキーボードか使えるようになります。
なお、ビルドしたファームウエアをそのまま使用する場合、QMKのビルド環境を作らずにQMK Toolboxで書き込むことが出来ます。

4. Windows PCの設定

MS-IMEは日本語モードでキーボード・レイアウトはUSキーボードです。設定はGK61 proと同じなので、そちらの記事を参照して下さい。

IMEの監視ソフトObserve IMEを使う前提です。設定についてもGK61 proと同様で、NumLockでIMEの状態を通知します。

5. キーキャップの交換

5.1 TiGrayのキーキャップ

赤黒のキーキャップがどうも好きになれないので、GK61 Proのワイヤレスモデルと同じTiGrayのキーキャップセットを購入しました。黄色の3.125uスペースキーと色が合います。

TiGrayのキーキャップに交換

5.2 3.0uスペースバー

一般的に入手出来るスペースバーは3.0uばかりですが、7色セットのXDAキーキャップを購入してみました。0.25uの隙間は、RGBの色をIMEに合わせて常時点灯させると気にならないかもしれません(※現状は緑→IME OFF、黄→IME ON)。

3uのキーキャップでは隙間が開く

6. 【参考】Macで使う場合

Githubのレポジトリ ja7rhk/qmk_firmware_gk61_pro はWindows11で動くようにしています。Macで使う場合には最低限以下のコード修正が必要です。

6.1 config.h

\keyboards\skyloong\gk61\pro_ds\config.h で定義している #define USE_OBSERVE_IME をコメントアウトします。

// IMEを監視する"observe_ime"を使用する場合、Num Lockでnicola on/offする。
// キーボード単体でnicola on/offを制御する場合はコメントアウトする。
//#define USE_OBSERVE_IME

WindowsではPC側に'observe_ime' というMS-IME監視ソフトを使ってキーボードの入力モードを同期させる仕組みを使っています。Macでは使えないので、PCにIME On/Off の指示を送るときにキーボード自体のnicolaモードをOn/Off させます。

6.2 keymap.c

\keyboards\skyloong\gk61\pro_ds\keymaps\nicola\keymap.c でIME On/Offの動作を規定しています。
keycodeを受け取ったときに呼ばれる以下の関数で、CapsLockのときにPCに対してIME Off(英数入力)のコードを送出し、無変換キー(F14)のときにIME On(かな入力)のコードを送出します。Macではこのコードが異なるので書き換えます。

bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    switch (keycode) {
        // 英数キー(Caps Lock)、nicola mode オフ
        case KC_CAPS_LOCK:
            if (record->event.pressed) {
                send_string(SS_TAP(X_LNG2)); // Mac
                //send_string(SS_LSFT(SS_TAP(X_CAPS_LOCK)));
            #ifndef USE_OBSERVE_IME
                nicola_off();
            #endif
            }
            return false;
        // 英数モードのとき左親指キー(F14)で、nicola mode オン
        case KC_F14:
            if (record->event.pressed) {
		        send_string(SS_TAP(X_LANG1)); // Mac
                //send_string(SS_TAP(X_F14));
            #ifndef USE_OBSERVE_IME
                nicola_on();
            #endif
            }
            return false;
    }
       [以下、省略]
}

キーの配列を変えるときはこのファイルのキーを変えれば良いです。'KC_' で始まるキーはdefaultで定義されていたものです。'NG_' で始まるキーは日本語用に定義したものです。これはnicola共通なので、ここでは変更しません。

東京お気楽カメラさんのサイトにhoboNicolaをMacOSに対応した記事があります。私にはMacの仕様がよく分からないのですが、前述のIME On/OffはUSキーボードでも効くようです。

6. 情報元


いいなと思ったら応援しよう!