はじめに
自作キーボードroBaのキーマップ編集は ZMK firmware を使用して行います
キーマップ編集にはGithubのアカウントが必要であり、手順はkumaさんが以下にて公開しておりますのでそちらを参考にしてください
kumaさんが公開しているテスト用のファームウェアの場合、ロータリーエンコーダにはPAGE_UP
とPAGE_DOWN
が割り当てられています
今回はそちらをマウススクロールに変更する手順を解説します
変更手順
githubの当該リポジトリで以下の2つのファイルを編集してください
zmk-config/config/roBa.keymap
zmk-config/config/boards/shields/Test/roBa.dtsi
roBa.keymap
追記内容
以下3か所追記します
- スクロール量の定義の追記
- behaviorの追記
- 割り当てたいレイヤーに追加したbehaviorを追記
(別のものが割り当てられている場合は修正)
roBa.keymap
// #includeのあとのあたりにスクロール量変更の定義を追記
#define ZMK_POINTING_DEFAULT_SCRL_VAL 80
// combosやmacrosと同じ階層に以下のbihaviorsを追記
// スクロール方向を逆にしたい場合は <&msc SCRL_DOWN> と <&msc SCRL_UP> を入れ替えてください
behaviors {
encoder_msc_down_up: encoder_msc_down_up {
compatible = "zmk,behavior-sensor-rotate";
label = "ENCODER_MSC_DOWN_UP";
#sensor-binding-cells = <0>;
bindings = <&msc SCRL_DOWN>, <&msc SCRL_UP>;
tap-ms = <20>;
};
// 設定したいレイヤーに sensor-bindings = <&encoder_msc_down_up>; を追記
// 以下は実際にレイヤー0に追記した例
keymap {
compatible = "zmk,keymap";
L0 {
bindings = <
&kp Q &kp L &kp U &kp COMMA &kp EQUAL &kp F &kp W &kp R &kp Y &kp P
&kp E &kp I &kp A &kp O &kp MINUS &kp LA(LEFT) &mkp MB3 &kp K &kp T &kp N &kp S &kp H
&kp J &kp X &kp C &kp V &kp PERIOD &mkp MB1 &mkp MB2 &kp G &kp D &kp M &kp Z &kp B
&kp LEFT_SHIFT &kp LEFT_WIN &kp LEFT_ALT &mo 1 &mt LEFT_SHIFT SPACE &mt RIGHT_CONTROL SPACE < 2 TAB &kp BACKSPACE &kp RS(RIGHT_CONTROL)
>;
sensor-bindings = <&encoder_msc_down_up>;
};
・・・(省略)・・・
};
roBa.dtsi
修正内容
追記はしません
当該箇所を 12 から 24 へ書き換えてください
roBa.dtsi
left_encoder: encoder_left {
compatible = "alps,ec11";
a-gpios = <&xiao_d 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&xiao_d 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <24>; // 値を12から24へ変更
status = "disabled";
};
上記2つのファイルを追記、書き換えすればロータリーエンコーダにマウススクロールを割り当てることができます
あとは上記の変更、保存後にビルドされたファームウェアを以下のkumaさんが公開している手順通り書き込んでください
キーマップのみの変更なのでトラックマウス側のマイコンにroBa_R-seeeduino_xiao_ble-zmk.uf2だけ書き込むのでOKです