Duh, chaining....

This commit is contained in:
Kyle Brown 2019-03-06 18:56:35 -08:00
parent a2cfa92f2f
commit 298f9489c2
4 changed files with 21 additions and 36 deletions

View File

@ -6,21 +6,21 @@ One key if you tap it, one or more modifiers if you hold it!
Just copy the example from New Keycode above your keymap and change KC.SOMETHING to the key that you want when tapped.
After that, just use the new keycode anywhere in your keymap.
|New Keycode | Description |
|---------------------------------------------------------------|-----------------------------------------------------------------|
|LCTL = KC.MT(KC.SOMETHING, KC.LCTRL) |`LCTRL` if held `kc` if tapped |
|LSFT = KC.MT(KC.SOMETHING, KC.LSFT) |`LSHIFT` if held `kc` if tapped |
|LALT = KC.MT(KC.SOMETHING, KC.LALT) |`LALT` if held `kc` if tapped |
|LGUI = KC.MT(KC.SOMETHING, KC.LGUI) |`LGUI` if held `kc` if tapped |
|RCTL = KC.MT(KC.SOMETHING, KC.RCTRL) |`RCTRL` if held `kc` if tapped |
|RSFT = KC.MT(KC.SOMETHING, KC.RSFT) |`RSHIFT` if held `kc` if tapped |
|RALT = KC.MT(KC.SOMETHING, KC.RALT) |`RALT` if held `kc` if tapped |
|RGUI = KC.MT(KC.SOMETHING, KC.RGUI) |`RGUI` if held `kc` if tapped |
|SGUI = KC.MT(KC.SOMETHING, KC.LSHFT, KC.LGUI) |`LSHIFT` and `LGUI` if held `kc` if tapped |
|LCA = KC.MT(KC.SOMETHING, KC.LCTRL, KC.LALT) |`LCTRL` and `LALT` if held `kc` if tapped |
|LCAG = KC.MT(KC.SOMETHING, KC.LCTRL, KC.LALT, KC.LGUI) |`LCTRL` and `LALT` and `LGUI` if held `kc` if tapped |
|MEH = KC.MT(KC.SOMETHING, KC.LCTRL, KC.LSFT, KC.LALT) |`CTRL` and `LSHIFT` and `LALT` if held `kc` if tapped |
|HYPR = KC.MT(KC.SOMETHING, KC.LCTRL, KC.LSFT, KC.LALT, KC.LGUI)|`LCTRL` and `LSHIFT` and `LALT` and `LGUI` if held `kc` if tapped|
|New Keycode | Description |
|-------------------------------------------------------|-----------------------------------------------------------------|
|LCTL = KC.MT(KC.SOMETHING, KC.LCTRL) |`LCTRL` if held `kc` if tapped |
|LSFT = KC.MT(KC.SOMETHING, KC.LSFT) |`LSHIFT` if held `kc` if tapped |
|LALT = KC.MT(KC.SOMETHING, KC.LALT) |`LALT` if held `kc` if tapped |
|LGUI = KC.MT(KC.SOMETHING, KC.LGUI) |`LGUI` if held `kc` if tapped |
|RCTL = KC.MT(KC.SOMETHING, KC.RCTRL) |`RCTRL` if held `kc` if tapped |
|RSFT = KC.MT(KC.SOMETHING, KC.RSFT) |`RSHIFT` if held `kc` if tapped |
|RALT = KC.MT(KC.SOMETHING, KC.RALT) |`RALT` if held `kc` if tapped |
|RGUI = KC.MT(KC.SOMETHING, KC.RGUI) |`RGUI` if held `kc` if tapped |
|SGUI = KC.MT(KC.SOMETHING, KC.LSHFT(KC.LGUI)) |`LSHIFT` and `LGUI` if held `kc` if tapped |
|LCA = KC.MT(KC.SOMETHING, KC.LCTRL(KC.LALT)) |`LCTRL` and `LALT` if held `kc` if tapped |
|LCAG = KC.MT(KC.SOMETHING, KC.LCTRL(KC.LALT(KC.LGUI))) |`LCTRL` and `LALT` and `LGUI` if held `kc` if tapped |
|MEH = KC.MT(KC.SOMETHING, KC.LCTRL(KC.LSFT(KC.LALT))) |`CTRL` and `LSHIFT` and `LALT` if held `kc` if tapped |
|HYPR = KC.MT(KC.SOMETHING, KC.HYPR) |`LCTRL` and `LSHIFT` and `LALT` and `LGUI` if held `kc` if tapped|
```python
SHFT_HOME = KC.MT(KC.HOME, KC.LSFT)

View File

@ -3,13 +3,7 @@ from kmk.kmktime import ticks_diff, ticks_ms
def mt_pressed(key, state, *args, **kwargs):
# Sets the timer start and acts like a modifier otherwise
state.keys_pressed.add(key.meta.mod1)
if key.meta.mod2:
state.keys_pressed.add(key.meta.mod2)
if key.meta.mod3:
state.keys_pressed.add(key.meta.mod3)
if key.meta.mod4:
state.keys_pressed.add(key.meta.mod4)
state.keys_pressed.add(key.meta.mods)
state.start_time['mod_tap'] = ticks_ms()
return state
@ -17,13 +11,7 @@ def mt_pressed(key, state, *args, **kwargs):
def mt_released(key, state, *args, **kwargs):
# On keyup, check timer, and press key if needed.
state.keys_pressed.discard(key.meta.mod1)
if key.meta.mod2:
state.keys_pressed.discard(key.meta.mod2)
if key.meta.mod3:
state.keys_pressed.discard(key.meta.mod3)
if key.meta.mod4:
state.keys_pressed.discard(key.meta.mod4)
state.keys_pressed.discard(key.meta.mods)
timer_name = 'mod_tap'
if state.start_time[timer_name] and (
ticks_diff(ticks_ms(), state.start_time[timer_name]) < state.config.tap_time

View File

@ -679,11 +679,11 @@ make_argumented_key(
)
def mod_tap_validator(kc, mod1=None, mod2=None, mod3=None, mod4=None):
def mod_tap_validator(kc, mods=None):
'''
Validates that mod tap keys are correctly used
'''
return ModTapKeyMeta(kc=kc, mod1=mod1, mod2=mod2, mod3=mod3, mod4=mod4)
return ModTapKeyMeta(kc=kc, mods=mods)
# ModTap

View File

@ -33,11 +33,8 @@ class LayerKeyMeta:
class ModTapKeyMeta:
def __init__(self, kc=None, mod1=None, mod2=None, mod3=None, mod4=None):
self.mod1 = mod1
self.mod2 = mod2
self.mod3 = mod3
self.mod4 = mod4
def __init__(self, kc=None, mods=None):
self.mods = mods
self.kc = kc