長らくキー配列についてはKeyball61のオレオレマッピングを語るの通りでしたが、加えてhome row modsを導入しました。
home row modsは、ホームポジションのasdf(左)とjkl;(右)を押しっぱなしたときに(hold)、CtrlやShiftなどの修飾キーとして機能させる方法論です。
配列やキー数が特殊なキーボードであっても、ホームポジションのキーがないことは少ないので、特定のキーボードにロックインされないところが魅力です。
Karabiner-Elementsを使えばmacbookのキーボードでも実現できて、外出時の生産性を下げずにすむのでは?と思って、まずはKeyball 61で試してみることにしました。
home row modsのページでは、GUI(Win/Cmd)、Alt(Option/Meta)、Shift、Ctrlの順に並べる方法が一般的と語っています(GASC)。しかし、私は紹介されている例のいずれにも該当しないASGCを採用することにしました。
a->Alt- イニシャルが共通で覚えやすい
Altキーは利用頻度が低いので小指に割り当てても負担が低い
s->Shift- イニシャルが共通で覚えやすい
d->GUI- macOSを左手単体で操作したくなったとき
GUI+a/s/fは使うが、dを使わないので干渉しにくい
- macOSを左手単体で操作したくなったとき
f->Ctrl- 頻繁に使うキーなので負担に強い指がいい
といったことを勘案してのものです。
なお、私はSandSという、スペースキーを長押ししたらShift扱いする方法を愛用しているので、実質的にはs->Shiftはほぼ用無しです。もし、Shift+Spaceをしたくなったら活躍するかも。
Emacsを使いたくなったら、Altの出番が増えるかもしれないしSAGCの方がいいかもなとも思い始めてます。
配列の他にhome row modsを導入するにあたって、気を使う点は、どんな状況で長押しを修飾キー判定させるかです。
Keyball 61のファームウェアであるqmkの場合は、実に多様な設定を組み合わせられます(https://github.com/qmk/qmk_firmware/blob/master/docs/tap_hold.md)。代表的なものは以下です。
TAPPING_TERM- 一定時間(ms)を過ぎたら、長押しとみなす
PERMISSIVE_HOLDTAPPING_TERM経過中でも、他のキーを押して離すと、長押し判定する
HOLD_ON_OTHER_KEY_PRESSTAPPING_TERM経過中に、他のキーを押すと、長押し判定する
さらにこれらは、キー単位で設定する方法も用意されています。
私は友人のアドバイスを受けて、TAPPING_TERMを160ms、PERMISSIVE_HOLDを有効にしました。
Keyballの場合は、info.jsonに以下のような設定を追加すればOKです(https://github.com/atusy/keyball/blob/5852d1e760382d86719d29388b39d65dd91dd0cc/qmk_firmware/keyboards/keyball/keyball61/info.json?plain=1#L10-L11)。
{
"tapping": {
"term": 160,
"permissive_hold": true
}
}今のところこれでほぼ困ることなく、このブログも書いています。
HOLD_ON_OTHER_KEY_PRESSはhome row modsには適用していません。
一点、これは自分の指使いの問題だと思いますが、ときどきaが意図せず長押し判定されることがあります。たぶん小指の運指能力が低くて、キー離れが悪いのだと思います。
TAPPING_TERM_BY_KEYで例外設定をしてもいいのですが、いったんはこのまま訓練を積んでみようと思います。
ENJOY
Atusy's blog