diff --git a/kmk/key_validators.py b/kmk/key_validators.py index 71af33d..5662c61 100644 --- a/kmk/key_validators.py +++ b/kmk/key_validators.py @@ -22,11 +22,11 @@ def layer_key_validator(layer, kc=None): return LayerKeyMeta(layer=layer, kc=kc) -def mod_tap_validator(kc, mods=None): +def mod_tap_validator(kc, mods=None, prefer_hold=True): ''' Validates that mod tap keys are correctly used ''' - return ModTapKeyMeta(kc=kc, mods=mods) + return ModTapKeyMeta(kc=kc, mods=mods, prefer_hold=prefer_hold) def tap_dance_key_validator(*codes): diff --git a/kmk/modules/holdtap.py b/kmk/modules/holdtap.py index 4145e8f..b5fc34f 100644 --- a/kmk/modules/holdtap.py +++ b/kmk/modules/holdtap.py @@ -112,7 +112,13 @@ class HoldTap(Module): pass def ht_activate_on_interrupt(self, key, keyboard, *args, **kwargs): - self.ht_activate_tap(key, keyboard, *args, **kwargs) + if key.meta.prefer_hold: + self.ht_activate_hold(key, keyboard, *args, **kwargs) + else: + self.ht_activate_tap(key, keyboard, *args, **kwargs) def ht_deactivate_on_interrupt(self, key, keyboard, *args, **kwargs): - self.ht_deactivate_tap(key, keyboard, *args, **kwargs) + if key.meta.prefer_hold: + self.ht_deactivate_hold(key, keyboard, *args, **kwargs) + else: + self.ht_deactivate_tap(key, keyboard, *args, **kwargs) diff --git a/kmk/types.py b/kmk/types.py index 54a49b3..0fc5ceb 100644 --- a/kmk/types.py +++ b/kmk/types.py @@ -18,9 +18,10 @@ class LayerKeyMeta: class ModTapKeyMeta: - def __init__(self, kc=None, mods=None): - self.mods = mods + def __init__(self, kc=None, mods=None, prefer_hold=True): + self.prefer_hold = prefer_hold self.kc = kc + self.mods = mods class KeySequenceMeta: