add hold-tap interrupt behavior: prefer hold.

The interrupt resolution of hold-tap keys can now be set to resolve to
either tap or hold key. The default mod-tap is set to prefer hold.
This commit is contained in:
xs5871 2022-01-24 22:59:17 +00:00 committed by Kyle Brown
parent 0f7afe5b2c
commit 21c058aaa8
3 changed files with 13 additions and 6 deletions

View File

@ -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):

View File

@ -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)

View File

@ -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: