自作キーボード / QMK / etc / TAPPING_TERM を操作毎に設定する

自作キーボード / QMK / etc / TAPPING_TERM を操作毎に設定する

TAPPING_TERM とは

TAPPING_TERM という単押し判定時間を設定する項目がある。 単押しと組み合わせ押し、二度打ち、とかの判定に使われる値になる。

この設定時間以内に key up した場合に単押しと判定されるというもの。 こいつを非常に短くすると、単押しするには意識的に素早くカツーンと入力しなければならない単押しと判定されなくなる。 逆に長くすると、単押しなのに単押し判定が終わるのが長いので入力がややダルくなる。

通常は config.hTAPPING_TERM の項目に統一的に行うのだが、個別にも設定できる。

どういう場合に TAPPING_TERM の設定が必要になるのか?

自分の場合はセミコロン(ホームポジション右小指の位置のキー)をレイヤー移動とセミコロンの2つを割り当てている。 非常にレイヤー移動の右小指を多用するので小指が疲れる。そのため小指のキーだけスピード軸という軽くて非常に浅く反応するキースイッチを使っている。つまり他のキーとそこだけ違う。

こような構成にした場合、スピード軸なので他のキーと同じ感覚で押しても他のキーよりも単押し判定が早く反応してしまい、後に入力しているのに先判定になってしまって同時押しタイミングが合わなくなるという問題が発生する。

ここで TAPPING_TERM を早めることで単押し判定がそう簡単に発生しないようにして回避する。

こうすると今度は長押し判定が合わなくなるのだが、PERMISSIVE_HOLD という設定をすることで、TAPPING_TERM 関係なく同時押しに使うボタンが同時押しに使われていたら同時押しと判定するようにでき、この問題が回避できる。

小指の単押しはセミコロンなのでそこまで入力にシビアなタイミングが要求されるキーでは無いので成立している。 よく考えればセミコロン自体がそんなに頻繁に打つキーでは無いので、別の場所に移設して、こいつは専門キーにしてしまったほうがいいのかもしれん。

個別に TAPPING_TERM を設定する

上記のように設定すると、確かに素早い同時押しの際の前後関係の入れ替えが起きなくなるのだが、全体に非常に素早く操作しないといけなくなるので実用的で無くなる。 小指の操作だけ特化して設定したい。

↓このようにすればいいらしい

uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
    case LT(_LW, KC_SCLN):
        return 140;
    default:
        return TAPPING_TERM;
    }
}

通常操作は 200 なのだがココだけ 140 と短くしている。

keyboard/diy_keyboard/qmk/etc/tapping_termjsetting_each_keys.txt · 最終更新: 2021-07-05 08:42 by ore