keyball39のkeymappingをQMKで書くときのメモ

keyball39のfirmware(QMK)を書くときに考えたことを書く。

論理配列: QWERTY -> COLEMAK

自作キーボードに数十万突っ込むくらいこだわりがあるのにQWERTY配列を使い続けるのは合理的な選択肢とは言えない。どんな論理配列があるのかはcappalx界隈では有名なdocumentを読むと勉強になる。無限の選択肢があるように見えるが、考慮しなければならない点がいくつかある。

  • 複数デバイスの運用。特にsmart phone (androidならflorisboardを使えばなんとかなる)
  • keyballを直接繋げられないとき(ごく稀)

すべてのedge caseを網羅しようとは思わないが、自分がroot権限を持たず、keyballを持ち込めない環境でも問題ないようにしたい。そうなると、OS標準搭載のcolemak配列かdvorak配列に絞られる。かなり保守的な選択肢ではあるが、colemakは割と好みである上に、vimもそのまま使えるので、colemakを選択。というかおすすめ。


home row mods: callum style

keyball39のような40%分割キーボードではmod keyの配置をどうするか考える必要がある。QMKのmod-tapやtap-danceを使うことでmodキーに必要な物理キー数を節約できる。しかし、これらの機能を使うと必然的にtimer機能に依存することになる。timer機能の使用は暗黙的に秒数感覚(threshold)のパラメータを導入することになる。この秒数感覚というのはなかなかのくせ者で、心地よいtimerの感覚は、人によって異なる上に、日によっても異なる。さらに、fixしたキーマップに習熟してタイピングの速度が上がる度に、適切な秒数感覚が変わる可能性がある。これらの理由からtimerの利用は可能な限り避けたい。そんなとき、home row modsに出会った。

こちらの記事で知った概念。mod key(shift, ctrl, alt, win(cmd))をホームポジションの4指(親指以外の指)に配置する。その上で、mod-tapを使用せず、sym layerとnav layerに配置したone-shot キーを組み合わせることで、timer機能に依存しない決定的に振る舞う home row modsを実現できる。(実装) この実装パターンは発案者であるcallum-oakley氏にちなんで、callum styleと呼ばれている。callum styleはあまりにも最高すぎて一生使う気がする。callum styleの話だけで別の記事が書けるので、積極的に布教していきたい。


QMKつまづきポイント

PC側から認識されない問題

https://goropikari.hatenablog.com/entry/keyball39_build_log

SPLIT_HAND_MATRIX_GRID で調べていたところ、keyball シリーズのファームウェアを書かれている kaoriya san が SPLIT_USB_TIMEOUT について言及しているつぶやきを発見し、この辺が怪しいのか?となったので試しに SPLIT_USB_TIMEOUT の値を 500 から 1000 まで増やしてみました。すると今まで2回に1回位のペースで失敗していたのがほぼ100%成功するようになりました。一方で macbook への接続となるとまだ不安定でした。2000 まで増やしても不安定で 2500 まで増やすとようやく macbook でも安定するようになりました。

右と左の判定がひっくり返る

https://github.com/Yowkees/keyball/issues/588 https://docs.qmk.fm/features/split_keyboard#setting-handedness

#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT 

compile時の謎エラー

だいたいQMKのversionが原因。0.26.11 でうまくいくことを確認済み。