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 でうまくいくことを確認済み。