Ergodox(qmk firmware)の同時押し/レイヤー切替の設定メモ


はじめに

qmk firmwareのドキュメントのAdvanced Keycodesで紹介されている設定周りのメモです。
自分で使用しているものだけ記載しています。気が向いたら他も追加していきます。

※執筆時のqmk firmwareのバージョンは0.6.172です。

前提

Tap=短押し
Hold=長押し
SFT_T(KC_A)=Tap時にa、Hold時にShift。Mod Tap keyと呼ばれる。
LT(layer1, KC_A)=Tap時にa、Hold時にlayer1に切替

SFT_TLTなどについてはErgoDoxのキーマップをいじる時に見るチートシートがわかりやすいです。

TAPPING_TERM

TapからHoldに切り替わるまでの押下時間(ms)。
デフォルト値は200。

RETRO_TAPPING

TAPPING_TERMを経過しても、他のキーを押していなければTapとして扱われるようになる。
TAPPING_TERMが短くてTapのつもりがHold扱いになってしまう場合の対策になるが、好み次第。
https://docs.qmk.fm/#/feature_advanced_keycodes?id=retro-tapping

SFT_T(KC_A) Down
# TAPPING_TERM経過...
SFT_T(KC_A) Up

=> 何も入力されない # RETRO_TAPPING無効
=> aが入力される   # RETRO_TAPPING有効

PERMISSIVE_HOLD

TAPPING_TERM経過前に他のキーを押すと、Holdとして扱われるようになる。
キーの同時押しが速いひとにおすすめ。
https://docs.qmk.fm/#/feature_advanced_keycodes?id=permissive-hold

SFT_T(KC_A) Down
# TAPPING_TERM経過前に
KC_X Down
KC_X Up
SFT_T(KC_A) Up

=> axが入力される # PERMISSIVE_HOLD無効
=> Xが入力される  # PERMISSIVE_HOLD有効

TAPPING_TERMを500以上に設定していると、自動的に有効になる。

TAPPING_FORCE_HOLD

Mod Tap keyをTap後にすぐにHoldしたときに、Holdとして扱われるようになる。
https://docs.qmk.fm/#/feature_advanced_keycodes?id=tapping-force-hold

SFT_T(KC_A) Down
SFT_T(KC_A) Up   # => aが入力される
SFT_T(KC_A) Down
# TAPPING_TERM経過...
KC_X Down
KC_X UP
SFT_T(KC_A) Up

=> aaaaaaaaa...xが入力される(aの連続はキーリピートによるもの) # TAPPING_FORCE_HOLD無効
=> Xが入力される  # TAPPING_FORCE_HOLD有効

IGNORE_MOD_TAP_INTERRUPT

Mod Tap keyと通常キーを連続して高速に押したとき、両方のキーをTapとして扱うようになる。
https://docs.qmk.fm/#/feature_advanced_keycodes?id=ignore-mod-tap-interrupt

SFT_T(KC_A) Down
KC_X Down
SFT_T(KC_A) Up
KC_X Up

=> Xが入力される # IGNORE_MOD_TAP_INTERRUPT無効
=> axが入力される  # IGNORE_MOD_TAP_INTERRUPT有効

※ 有効時でも両方のキーをTAPPING_TERM以上押し続けていると、Holdとして扱われる。
※ モディファイアキーのみに適用される。レイヤーキーには適用されない。

最後に

キーマップやconfigを公開してるので良かったら参考にしてください
https://github.com/uodna/qmk_firmware/tree/develop/keyboards/iris/keymaps/uodna-osx-ansi