
[QMK] 押しっぱなしの挙動を変更して、繊細なしょっさんに適合させる [Tap & Hold]
繊細のキーボードへの対処に困っていたら、救世主が現れました。
先日公開したこの記事に、ヒントとなるコメントをいただけたんです。

私のとった手段はこちら。keyball44 配下の config.h に次の二行を足して、firmware を作り直しました。
#define PERMISSIVE_HOLD
#define RETRO_TAPPING
結果的に、しょっさんの keyball44/via/config.h は次のようになりました。
#pragma once
#ifdef RGBLIGHT_ENABLE
//# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
//# define RGBLIGHT_EFFECT_SNAKE
//# define RGBLIGHT_EFFECT_KNIGHT
//# define RGBLIGHT_EFFECT_CHRISTMAS
//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
//# define RGBLIGHT_EFFECT_RGB_TEST
//# define RGBLIGHT_EFFECT_ALTERNATING
//# define RGBLIGHT_EFFECT_TWINKLE
#endif
#define TAP_CODE_DELAY 5
#define TAPPING_TERM 180
#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
#define AUTO_MOUSE_DEFAULT_LAYER 1
#define AUTO_MOUSE_TIME 780
#define DYNAMIC_KEYMAP_LAYER_COUNT 9
#define PERMISSIVE_HOLD
#define RETRO_TAPPING
LAYER は 9つが限界だなーって所です。RGB を使わないようにしても、10 にすると EEPROM の容量が不足します。まぁ、これだけあれば問題ないでしょう。十分です。
それにしても、この 2行でとても快適になりました。これまでは TAPPING_TIME で設定している 0.18秒を待つ必要がありましたが、今はもうその必要がありません。ほぼ同時押しでもきちんと反応します。予想していないキー入力はほとんどなくなりました。
これでキーボードに対する不満が全てなくなったのかと言うと、そんな事はありません。
Hold したあとに、必要なキーを押下すれば何ら問題はありません。ただ、そのまま離してしまうと、どんなに時間が経過していたとしても、Tap 動作になります。例えば私は Tap&Hold でスペースキーを指定していますが、まちがってこのキーを押してしまった場合、離すとスペースキーが必ず反応してしまいます。
ふと、Ctrl や Shift を押してしまった時に、そのまま離しても通常は何も起きませんよね。ただ、QMK でPERMISSIVE_HOLD と RETRO_TAPPING を入れただけでは、このまちがって押してしまった時の対処が行われません。これは流石にコードにちょっと手を入れる必要があるかもしれません。例えば、TAPPING_TIME 以上押しっぱなしにしていたら反応させないとかね。
と言うことで、完全解決ではないものの、個人的にはほぼ解決した状態になりました。しばらくは、この状況でキーボードを楽しんでみます。
ありがとうございました 🥰
いいなと思ったら応援しよう!
