implement per-key tap_time.
This commit is contained in:
parent
21c058aaa8
commit
f30206c7d5
@ -22,11 +22,11 @@ def layer_key_validator(layer, kc=None):
|
||||
return LayerKeyMeta(layer=layer, kc=kc)
|
||||
|
||||
|
||||
def mod_tap_validator(kc, mods=None, prefer_hold=True):
|
||||
def mod_tap_validator(kc, mods=None, prefer_hold=True, tap_time=None):
|
||||
'''
|
||||
Validates that mod tap keys are correctly used
|
||||
'''
|
||||
return ModTapKeyMeta(kc=kc, mods=mods, prefer_hold=prefer_hold)
|
||||
return ModTapKeyMeta(kc=kc, mods=mods, prefer_hold=prefer_hold, tap_time=tap_time)
|
||||
|
||||
|
||||
def tap_dance_key_validator(*codes):
|
||||
|
@ -61,8 +61,12 @@ class HoldTap(Module):
|
||||
|
||||
def ht_pressed(self, key, keyboard, *args, **kwargs):
|
||||
'''Do nothing yet, action resolves when key is released, timer expires or other key is pressed.'''
|
||||
if key.meta.tap_time is None:
|
||||
tap_time = self.tap_time
|
||||
else:
|
||||
tap_time = key.meta.tap_time
|
||||
timeout_key = keyboard.set_timeout(
|
||||
self.tap_time,
|
||||
tap_time,
|
||||
lambda: self.on_tap_time_expired(key, keyboard, *args, **kwargs),
|
||||
)
|
||||
self.key_states[key] = HoldTapKeyState(timeout_key, *args, **kwargs)
|
||||
|
@ -12,16 +12,18 @@ class AttrDict(dict):
|
||||
|
||||
|
||||
class LayerKeyMeta:
|
||||
def __init__(self, layer, kc=None):
|
||||
def __init__(self, layer, kc=None, tap_time=None):
|
||||
self.layer = layer
|
||||
self.kc = kc
|
||||
self.tap_time = tap_time
|
||||
|
||||
|
||||
class ModTapKeyMeta:
|
||||
def __init__(self, kc=None, mods=None, prefer_hold=True):
|
||||
def __init__(self, kc=None, mods=None, prefer_hold=True, tap_time=None):
|
||||
self.prefer_hold = prefer_hold
|
||||
self.kc = kc
|
||||
self.mods = mods
|
||||
self.tap_time = tap_time
|
||||
|
||||
|
||||
class KeySequenceMeta:
|
||||
|
Loading…
x
Reference in New Issue
Block a user