prepare holdtap for tapdance refactor

This commit is contained in:
xs5871 2022-05-03 17:17:45 +00:00 committed by Kyle Brown
parent 29abba63e7
commit 0751f6ca5f
2 changed files with 25 additions and 6 deletions

View File

@ -1,6 +1,8 @@
from micropython import const
from kmk.keys import make_argumented_key
from kmk.modules import Module
from kmk.types import HoldTapKeyMeta
class ActivationType:
@ -24,6 +26,12 @@ class HoldTap(Module):
def __init__(self):
self.key_buffer = []
self.key_states = {}
make_argumented_key(
validator=HoldTapKeyMeta,
names=('HT',),
on_press=self.ht_pressed,
on_release=self.ht_released,
)
def during_bootup(self, keyboard):
return
@ -58,6 +66,9 @@ class HoldTap(Module):
self.send_key_buffer(keyboard)
if state.activated == ActivationType.INTERRUPTED:
current_key = keyboard._find_key_in_map(int_coord)
# if interrupt on release: store interrupting keys until one of them
# is released.
if key.meta.tap_interrupted:
@ -140,16 +151,16 @@ class HoldTap(Module):
self.key_buffer.clear()
def ht_activate_hold(self, key, keyboard, *args, **kwargs):
pass
keyboard.process_key(key.meta.hold, True)
def ht_deactivate_hold(self, key, keyboard, *args, **kwargs):
pass
keyboard.process_key(key.meta.hold, False)
def ht_activate_tap(self, key, keyboard, *args, **kwargs):
pass
keyboard.process_key(key.meta.tap, True)
def ht_deactivate_tap(self, key, keyboard, *args, **kwargs):
pass
keyboard.process_key(key.meta.tap, False)
def ht_activate_on_interrupt(self, key, keyboard, *args, **kwargs):
if key.meta.prefer_hold:

View File

@ -12,8 +12,16 @@ class AttrDict(dict):
class HoldTapKeyMeta:
def __init__(self, kc=None, prefer_hold=True, tap_interrupted=False, tap_time=None):
self.kc = kc
def __init__(
self,
tap,
hold,
prefer_hold=True,
tap_interrupted=False,
tap_time=None,
):
self.tap = tap
self.hold = hold
self.prefer_hold = prefer_hold
self.tap_interrupted = tap_interrupted
self.tap_time = tap_time