現在はRoba派生のトラボ付き左右分割キーボードを使っている。このキーボードのファームウェアには、Roba同様にZMK Firmwareが使われている。使い勝手を向上するためにZMK Firmwareの設定をカスタマイズした内容を紹介する。
JIS配列キーボードとして扱う
ZMK Firmwareは (Keymap Editorも) はUS配列が前提となっている。内臓キーボードや他の外付けキーボードがJIS配列の場合、JIS配列キーボードとして扱う方が便利なため、下記の方法で(無理やり)JIS配列としてキーマップを設定している。
-
JIS配列のキーのうち、同じキーコードがUS配列に存在するもの(株式会社エー・アンド・デイのキー対応表がわかりやすい)は、Keymap EditorでUS配列のキーとして登録する。
-
上記以外のキー(下記の3つの記号)は、keymapファイルで直接設定する。(Keymap Editorでは⦸の表示となる。)
#define JP_YEN 0x89 // ¥ #define JP_PIPE LS(0x89) // | #define JP_UNDERSCORE LS(0x87) // _
トラックボールでのスクロール
デフォルトレイヤのキーにHold-Tapを設定して、Hold時にスクロールレイヤを有効にしてトラックボールでスクロールできるようにしている。
Hold-Tapに hold-while-undecided を設定することで、Press直後すぐにトラックボールを操作してもスクロールが可能となる。(この設定をしないとPressしてから tapping-term-ms 経過するまでスクロールが認識されない。)
behaviors {
st: scroll_tap {
compatible = "zmk,behavior-hold-tap";
label = "Scroll / Tap";
bindings = <&mo>, <&kp>;
#binding-cells = <2>;
tapping-term-ms = <200>;
flavor = "balanced";
hold-while-undecided;
};
};
トラックボールでの拡大・縮小
スクロールと同様に、キーをのHold時にスクロールレイヤの有効化とCtrlのPressをすることで、トラックボールで拡張・縮小ができるようにしている。
標準のHold-Tap (Layer-Tap) では、Hold時の振る舞いにModifierとレイヤ切り替えを同時に設定することができない。このため、スクロールレイヤの有効化とCtrlのPressを実行するマクロを設定して、Holdに設定している。
macros {
sc: scroll_control {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
bindings =
<¯o_press>,
<&mo 4 &kp LCTRL>,
<¯o_pause_for_release>,
<¯o_release>,
<&kp LCTRL &mo 4>;
label = "Scroll Ctrl";
};
};
behaviors {
zp: zoom_tap {
compatible = "zmk,behavior-hold-tap";
label = "Zoom / Tap";
#binding-cells = <2>;
bindings = <&sc>, <&kp>;
tapping-term-ms = <200>;
flavor = "balanced";
hold-while-undecided;
};
};
半角・全角切り替え
親指キーにTap Danceを設定し、1回のTapで英数、2回のTapでかなに切り替わるようにしている。2回のTapはゆっくりめでも認識されるように tapping-term-ms を長めに設定している。
behaviors {
ek: eisu_kana {
compatible = "zmk,behavior-tap-dance";
label = "Eisu / Kana";
#binding-cells = <0>;
bindings = <&kp LANGUAGE_2>, <&kp LANGUAGE_1>;
tapping-term-ms = <250>;
};
};