Checkpoint alpha: Reflow macros and keycodes into a consistent structure. Most internal state functionality largely untouched (just moved)

This commit is contained in:
Josh Klar
2018-12-29 04:44:52 -08:00
parent af140a16a6
commit 39a6465658
12 changed files with 767 additions and 967 deletions

40
kmk/handlers/sequences.py Normal file
View File

@@ -0,0 +1,40 @@
from kmk.keycodes import ALL_KEYS, KC, make_key
from kmk.types import KeySequenceMeta
def sequence_press_handler(key, state, KC, *args, **kwargs):
old_keys_pressed = state.keys_pressed
state.keys_pressed = set()
for ikey in key.meta.seq:
if not getattr(ikey, 'no_press', None):
state.process_key(ikey, True)
state.config._send_hid()
if not getattr(ikey, 'no_release', None):
state.process_key(ikey, False)
state.config._send_hid()
state.keys_pressed = old_keys_pressed
return state
def simple_key_sequence(seq):
return make_key(
meta=KeySequenceMeta(seq),
on_press=sequence_press_handler,
)
def send_string(message):
seq = []
for char in message:
kc = ALL_KEYS[char]
if char.isupper():
kc = KC.LSHIFT(kc)
seq.append(kc)
return simple_key_sequence(seq)