moNa2 が手元に届いてから、キーマップを反映するまでの手順を記述します。
必要なのは「キースイッチ、USB-C ケーブル、つまようじ」だけです。
時間があれば、先にファームウェアの書き出しを済ませると良いでしょう。
- 組立済みの moNa2 が手元に届く
- キースイッチ と キーキャップ を取り付ける
- とある GitHub リポジトリ を フォーク して KeymapEditor と連携する
- KeymapEditor にて キーマッピング して保存する
- GitHub リポジトリ に ファームウェア を書き出して ダウンロード する
- ファームウェアをダウンロードしたら、USB-C ケーブルを使って moNa2 に転送する
まず zmk の ファームウェア書き出し は GitHub Actions を利用することになります。
GitHub アカウントを持っていない場合は、事前に アカウント登録 しておきましょう。
準備できたら こちらのリポジトリ をフォークしましょう。
この時点で main ブランチに commit
や push
をすると GitHub Actions が実行されて、ファームウェアが自動で書き出されます。
zmk の キーマップ変更は config/moNa2.keymap
などの .keymnap ファイルを編集して main ブランチに反映する必要があります。
KeymapEditor を利用すると GUI で キーマップ変更が可能になります。
保存すると main ブランチ に push
されて、自動的に ファームウェア が書き出されます。
ともあれ、フォークしたリポジトリ と KeymapEditor を連携しましょう。
初見だと UI に戸惑うかもしれません。
しっかりキーマッピングするために、概要を理解しておきましょう。
とりあえず &kp(Key Press)
&mo(Momentary Layer)
&mkp(Mouse Button Press)
&bt(Bluetooth)
あたりを押さえておくと、雰囲気がつかめると思います。
詳しくは https://zmk.dev/docs/keymaps/behaviors
おなじみのキーコードです。
これは UI に検索窓があるので十分だと思います。
詳しくは https://zmk.dev/docs/keymaps/list-of-keycodes
とりあえず BT_CLR_ALL
BT_SEL 0
BT_SEL 1
あたりがあれば良いでしょう。
以下の流れでバッチリペアリングできると思います。
BT_CLR_ALL
で 出荷時のペアリング情報をクリアしておくBT_SEL 0
で メインデバイス と ペアリング するBT_SEL 1
で サブデバイス と ペアリング する
詳しくは https://zmk.dev/docs/keymaps/behaviors/bluetooth
エンコーダーは、少しだけ特殊な立ち位置です。
とりあえず &inc_dec_kp
で 左回り と 右回り それぞれに &kp
が指定できるんだなぁ。
ぐらいの理解で良いでしょう。
詳しくは https://zmk.dev/docs/features/encoders
前述の通り KeymapEditor の作業内容を保存すると、GitHub リポジトリ に反映されて、自動的にファームウェアが書き出されます。
ファームウェアをダウンロードして、解凍すると以下 3 点が格納されています。
settings_reset-seeeduino_xiao_ble-zmk.uf2
- 設定リセット用のファームウェア
moNa2_L rgbled_adapter-seeeduino_xiao_ble-zmk.uf2
- 左手用のファームウェア
moNa2_R rgbled_adapter-seeeduino_xiao_ble-zmk.uf2
- 右手用のファームウェア
以下の手順で転送しましょう。
- moNa2 と パソコン を USB-C ケーブル で接続します
- マイコンのリセットボタンを 2 回押します(つまようじの出番です)
- フォルダに「XIAO SENSE」が表示されたら
settings_reset-seeeduino_xiao_ble-zmk.uf2
を投下します - 接続が解除されます
- 再度、マイコンのリセットボタンを 2 回押します
- フォルダに「XIAO SENSE」が表示されたら
moNa2_R rgbled_adapter-seeeduino_xiao_ble-zmk.uf2
を投下します
(左側の場合はmoNa2_L rgbled_adapter-seeeduino_xiao_ble-zmk.uf2
を投下します) - 接続が解除されます
- USB-C ケーブル を抜きます
これで ファームウェア の転送は完了しました。
ちなみに、キーマップの変更だけであれば、右側のみファームを更新すれば良くて、さらに settings_reset-seeeduino_xiao_ble-zmk.uf2 のリセット
も不要とのことでした。
無線の左右分割キーボードの起動方法にはマナーがあります。
- まずは スレーブ(左側)の電源を入れる
- つぎに マスター(右側)の電源を入れる
これでスムーズに、キーボード同士がペアリングされると思います。
最後に、以下の手順でデバイスとペアリングしましょう。
BT_CLR_ALL
で 出荷時のペアリング情報をクリアしておくBT_SEL 0
で メインデバイス と ペアリング するBT_SEL 1
で サブデバイス と ペアリング する
これにてオンボードは終了です。
今後とも良き moNa2 ライフをご堪能ください。
Keycodes だけでは変更できない部分の調整方法を解説します。
現状は CPI を増減する方法がないので、設定ファイルで調整しましょう。
config/boards/shields/moNa2/moNa2_R.conf
の CONFIG_PMW3610_CPI
で指定できます。
私は 600 にしています。
CONFIG_PMW3610_CPI=400
マウスの移動速度によって CPI を加減する機構も含まれています。
つまり、移動速度が遅ければ細かい動きができるし、移動速度が早いと遠くまで動けます。
私は使わないので n
にしています。
CONFIG_PMW3610_ADJUSTABLE_MOUSESPEED=y
マウスを動かした直後、一定時間だけ特定のレイヤーにする機能です。
config/boards/shields/moNa2/moNa2_R.overlay
の automouse-layer
で指定できます。
私は使わないのでコメントアウトしています。
trackball: trackball@0 {
status = "okay";
compatible = "pixart,pmw3610";
reg = <0>;
spi-max-frequency = <2000000>;
irq-gpios = <&gpio0 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
automouse-layer = <6>; ⭐️ここでレイヤー番号を指定します。
scroll-layers = <5>;
};
マウスレイヤーの滞留時間は config/boards/shields/moNa2/moNa2_R.conf
の CONFIG_PMW3610_AUTOMOUSE_TIMEOUT_MS
で変更可能です。
CONFIG_PMW3610_AUTOMOUSE_TIMEOUT_MS=700
特定のレイヤーにいる間は、トラックボールがスクロールモードになる機能です。
config/boards/shields/moNa2/moNa2_R.overlay
の scroll-layers
で指定できます。
私は 3 を指定しています。
trackball: trackball@0 {
status = "okay";
compatible = "pixart,pmw3610";
reg = <0>;
spi-max-frequency = <2000000>;
irq-gpios = <&gpio0 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
automouse-layer = <6>;
scroll-layers = <5>; ⭐️ここでレイヤー番号を指定します。
};
スクロールの方向は config/boards/shields/moNa2/moNa2_R.conf
の CONFIG_PMW3610_INVERT_SCROLL_X
と CONFIG_PMW3610_INVERT_SCROLL_Y
で変更可能です。
私はデフォルトとは逆方向で使いたいので、以下で設定しています。
CONFIG_PMW3610_INVERT_SCROLL_X=n
CONFIG_PMW3610_INVERT_SCROLL_Y=y
-
以下の GitHub リポジトリをフォークします。
https://github.com/sayu-hub/zmk-pmw3610-driver -
src/pmw3610.h
とsrc/pmw3610.c
に主な実装があるので、カスタマイズして main ブランチ に反映します。 -
自身の zmk-config-moNa2 にある
config/west.yml
の依存関係を変更して main ブランチに反映します。
manifest:
remotes:
- name: zmkfirmware
url-base: https://github.com/petejohanson
- name: sayu-hub
url-base: https://github.com/sayu-hub
- name: burakiyo ⭐️ 自分のアカウント名を追加
url-base: https://github.com/burakiyo ⭐️ 自分のアカウントURLを追加
- name: caksoylar
url-base: https://github.com/caksoylar
projects:
- name: zmk
remote: zmkfirmware
revision: feat/pointers-move-scroll
import: app/west.yml
- name: zmk-pmw3610-driver
remote: burakiyo ⭐️ ここを sayu-hub から自分のアカウント名に変更
revision: main
- name: zmk-rgbled-widget
remote: caksoylar
revision: main
self:
path: config
以上で、トラックボールセンサードライバのカスタマイズが可能になります。
ナイスな実装ができたら本家に PR すると良いでしょう 🙆♂️