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と同じにしています。やはり右下の制御キーは使わなくとも不便はありません。
キーの配列は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スペースキーと色が合います。
5.2 3.0uスペースバー
一般的に入手出来るスペースバーは3.0uばかりですが、7色セットのXDAキーキャップを購入してみました。0.25uの隙間は、RGBの色をIMEに合わせて常時点灯させると気にならないかもしれません(※現状は緑→IME OFF、黄→IME ON)。
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キーボードでも効くようです。