diff --git a/docs/modtap.md b/docs/modtap.md index 1662a48..7db2dec 100644 --- a/docs/modtap.md +++ b/docs/modtap.md @@ -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) diff --git a/kmk/handlers/modtap.py b/kmk/handlers/modtap.py index a0a70d5..c88dad4 100644 --- a/kmk/handlers/modtap.py +++ b/kmk/handlers/modtap.py @@ -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 diff --git a/kmk/keys.py b/kmk/keys.py index bc021ee..0272acd 100644 --- a/kmk/keys.py +++ b/kmk/keys.py @@ -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 diff --git a/kmk/types.py b/kmk/types.py index 6276cdf..73a6d60 100644 --- a/kmk/types.py +++ b/kmk/types.py @@ -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