update modtap to holdtap
This commit is contained in:
		@@ -13,14 +13,14 @@ from kmk.handlers.sequences import send_string
 | 
			
		||||
from kmk.hid import HIDModes
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.modules.split import Split, SplitSide, SplitType
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
layers_ext = Layers()
 | 
			
		||||
keyboard.modules.append(layers_ext)
 | 
			
		||||
keyboard.modules.append(modtap)
 | 
			
		||||
keyboard.modules.append(holdtap)
 | 
			
		||||
 | 
			
		||||
oled_ext = Oled(
 | 
			
		||||
    OledData(
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ Retailers (USA)
 | 
			
		||||
Extensions enabled by default  
 | 
			
		||||
- [Layers](/docs/en/layers.md) Need more keys than switches? Use layers.
 | 
			
		||||
- [BLE_Split](/docs/en/split_keyboards.md) Connects halves without wires
 | 
			
		||||
- [ModTap](/docs/en/modtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
- [HoldTap](/docs/en/holdtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
 | 
			
		||||
Common Extensions
 | 
			
		||||
- [Split](/docs/en/split_keyboards.md) Connects halves using a wire
 | 
			
		||||
 
 | 
			
		||||
@@ -4,15 +4,15 @@ from kb import KMKKeyboard
 | 
			
		||||
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.scanners import DiodeOrientation
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
 | 
			
		||||
keyboard.modules.append(Layers())
 | 
			
		||||
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
keyboard.modules.append(modtap)
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
keyboard.modules.append(holdtap)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
NONE = KC.NO
 | 
			
		||||
@@ -25,9 +25,9 @@ CAD = KC.LCTL(KC.LALT(KC.DEL))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ZSFT = KC.MT(KC.Z, KC.LSFT, prefer_hold=True, tap_interrupted=False, tap_time=3000)
 | 
			
		||||
SLSHSFT = KC.MT(KC.SLSH, KC.LSFT, prefer_hold=True, tap_interrupted=False, tap_time=3000)
 | 
			
		||||
ALCTL = KC.MT(KC.A, KC.LCTRL, prefer_hold=False, tap_interrupted=False, tap_time=150)
 | 
			
		||||
ZSFT = KC.HT(KC.Z, KC.LSFT, prefer_hold=True, tap_interrupted=False, tap_time=3000)
 | 
			
		||||
SLSHSFT = KC.HT(KC.SLSH, KC.LSFT, prefer_hold=True, tap_interrupted=False, tap_time=3000)
 | 
			
		||||
ALCTL = KC.HT(KC.A, KC.LCTRL, prefer_hold=False, tap_interrupted=False, tap_time=150)
 | 
			
		||||
 | 
			
		||||
# flake8: noqa: E261
 | 
			
		||||
keyboard.keymap = [
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ from kb import KMKKeyboard
 | 
			
		||||
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.modules.mouse_keys import MouseKeys
 | 
			
		||||
from kmk.modules.split import Split, SplitSide
 | 
			
		||||
 | 
			
		||||
@@ -27,7 +27,7 @@ split = Split(
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
layers_ext = Layers()
 | 
			
		||||
mod_tap = ModTap()
 | 
			
		||||
mod_tap = HoldTap()
 | 
			
		||||
mouse_key = MouseKeys()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -39,12 +39,12 @@ XXXXXXX = KC.NO
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Mod-taps
 | 
			
		||||
A_SFT = KC.MT(KC.A, KC.LSFT)
 | 
			
		||||
SCLN_SFT = KC.MT(KC.SCLN, KC.LSFT)
 | 
			
		||||
X_CTL = KC.MT(KC.X, KC.LCTRL)
 | 
			
		||||
C_ALT = KC.MT(KC.C, KC.LALT)
 | 
			
		||||
COM_ALT = KC.MT(KC.COMM, KC.LALT)
 | 
			
		||||
DOT_CTL = KC.MT(KC.DOT, KC.LCTRL)
 | 
			
		||||
A_SFT = KC.HT(KC.A, KC.LSFT)
 | 
			
		||||
SCLN_SFT = KC.HT(KC.SCLN, KC.LSFT)
 | 
			
		||||
X_CTL = KC.HT(KC.X, KC.LCTRL)
 | 
			
		||||
C_ALT = KC.HT(KC.C, KC.LALT)
 | 
			
		||||
COM_ALT = KC.HT(KC.COMM, KC.LALT)
 | 
			
		||||
DOT_CTL = KC.HT(KC.DOT, KC.LCTRL)
 | 
			
		||||
CTL_ALT = KC.LCTRL(KC.LALT)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ from kmk.extensions.rgb import RGB
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.encoder import EncoderHandler
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.modules.mouse_keys import MouseKeys
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
@@ -21,13 +21,13 @@ XXXXXXX = KC.NO
 | 
			
		||||
# Adding extensions
 | 
			
		||||
rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, val_limit=50, hue_default=190, sat_default=100, val_default=5)
 | 
			
		||||
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
layers = Layers()
 | 
			
		||||
media_keys = MediaKeys()
 | 
			
		||||
 | 
			
		||||
encoder_handler = EncoderHandler()
 | 
			
		||||
 | 
			
		||||
keyboard.modules = [layers, modtap]  #, encoder_handler]
 | 
			
		||||
keyboard.modules = [layers, holdtap]  #, encoder_handler]
 | 
			
		||||
keyboard.modules.append(MouseKeys())
 | 
			
		||||
keyboard.extensions = [rgb, media_keys]
 | 
			
		||||
 | 
			
		||||
@@ -46,14 +46,14 @@ MEDIA_BSPC = KC.LT(LYR_MEDIA, KC.BSPC)
 | 
			
		||||
MOUSE_M = KC.LT(LYR_MOUSE, KC.M)
 | 
			
		||||
 | 
			
		||||
# HOMEROW MODS
 | 
			
		||||
LCTL_A = KC.MT(KC.A, KC.LCTRL)
 | 
			
		||||
LGUI_R = KC.MT(KC.R, KC.LGUI)
 | 
			
		||||
LALT_S = KC.MT(KC.S, KC.LALT)
 | 
			
		||||
LSFT_T = KC.MT(KC.T, KC.LSFT)
 | 
			
		||||
RSFT_N = KC.MT(KC.N, KC.RSFT)
 | 
			
		||||
RALT_E = KC.MT(KC.E, KC.RALT)
 | 
			
		||||
RGUI_I = KC.MT(KC.I, KC.RGUI)
 | 
			
		||||
RCTL_O = KC.MT(KC.O, KC.RCTRL)
 | 
			
		||||
LCTL_A = KC.HT(KC.A, KC.LCTRL)
 | 
			
		||||
LGUI_R = KC.HT(KC.R, KC.LGUI)
 | 
			
		||||
LALT_S = KC.HT(KC.S, KC.LALT)
 | 
			
		||||
LSFT_T = KC.HT(KC.T, KC.LSFT)
 | 
			
		||||
RSFT_N = KC.HT(KC.N, KC.RSFT)
 | 
			
		||||
RALT_E = KC.HT(KC.E, KC.RALT)
 | 
			
		||||
RGUI_I = KC.HT(KC.I, KC.RGUI)
 | 
			
		||||
RCTL_O = KC.HT(KC.O, KC.RCTRL)
 | 
			
		||||
 | 
			
		||||
# OTHER SHORTCUTS
 | 
			
		||||
BRWSR_LFT = KC.LCTRL(KC.LSFT(KC.TAB))
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.c
 | 
			
		||||
 | 
			
		||||
Extensions enabled by default  
 | 
			
		||||
- [Layers](/docs/en/layers.md) Need more keys than switches? Use layers.
 | 
			
		||||
- [ModTap](/docs/en/modtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
- [HoldTap](/docs/en/holdtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
- [LED](/docs/en/led.md) Light your keys up
 | 
			
		||||
 | 
			
		||||
Common Extensions
 | 
			
		||||
 
 | 
			
		||||
@@ -3,16 +3,16 @@ from kb import KMKKeyboard
 | 
			
		||||
from kmk.extensions.led import LED
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
layers_ext = Layers()
 | 
			
		||||
led = LED()
 | 
			
		||||
keyboard.extensions = [led]
 | 
			
		||||
keyboard.modules = [layers_ext, modtap]
 | 
			
		||||
keyboard.modules = [layers_ext, holdtap]
 | 
			
		||||
 | 
			
		||||
# Cleaner key names
 | 
			
		||||
_______ = KC.TRNS
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@ It has the following modules/extensions enabled:
 | 
			
		||||
- [Split](/docs/en/split_keyboards.md) Connects halves using a wire
 | 
			
		||||
- [Layers](/docs/en/layers.md) Do you need more keys than switches? Use
 | 
			
		||||
  layers.
 | 
			
		||||
- [ModTap](/docs/en/modtap.md) Enable press/hold double binding of keys
 | 
			
		||||
- [HoldTap](/docs/en/holdtap.md) Enable press/hold double binding of keys
 | 
			
		||||
- [MediaKeys](/docs/en/media_keys.md) Common media controls
 | 
			
		||||
 | 
			
		||||
Also uncomment right section to enable samples of following:
 | 
			
		||||
 
 | 
			
		||||
@@ -5,14 +5,14 @@ from kmk.extensions.rgb import RGB, AnimationModes
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.encoder import EncoderHandler
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.modules.split import Split, SplitType
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
keyboard.debug_enabled = True
 | 
			
		||||
 | 
			
		||||
keyboard.modules.append(Layers())
 | 
			
		||||
keyboard.modules.append(ModTap())
 | 
			
		||||
keyboard.modules.append(HoldTap())
 | 
			
		||||
keyboard.extensions.append(MediaKeys())
 | 
			
		||||
 | 
			
		||||
# Using drive names (KYRIAL, KYRIAR) to recognize sides; use split_side arg if you're not doing it
 | 
			
		||||
@@ -33,10 +33,10 @@ keyboard.extensions.append(rgb_ext)
 | 
			
		||||
 | 
			
		||||
# Edit your layout below
 | 
			
		||||
# Currently, that's a default QMK Kyria Layout - https://config.qmk.fm/#/splitkb/kyria/rev1/LAYOUT
 | 
			
		||||
ESC_LCTL = KC.MT(KC.ESC, KC.LCTL)
 | 
			
		||||
QUOTE_RCTL = KC.MT(KC.QUOTE, KC.RCTL)
 | 
			
		||||
ENT_LALT = KC.MT(KC.ENT, KC.LALT)
 | 
			
		||||
MINUS_RCTL = KC.MT(KC.MINUS, KC.RCTL)
 | 
			
		||||
ESC_LCTL = KC.HT(KC.ESC, KC.LCTL)
 | 
			
		||||
QUOTE_RCTL = KC.HT(KC.QUOTE, KC.RCTL)
 | 
			
		||||
ENT_LALT = KC.HT(KC.ENT, KC.LALT)
 | 
			
		||||
MINUS_RCTL = KC.HT(KC.MINUS, KC.RCTL)
 | 
			
		||||
keyboard.keymap = [
 | 
			
		||||
    [
 | 
			
		||||
        KC.TAB,        KC.Q,          KC.W,          KC.E,          KC.R,          KC.T,                                                                      KC.Y,          KC.U,          KC.I,          KC.O,          KC.P,          KC.BSPC,
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ from kmk.extensions.media_keys import MediaKeys
 | 
			
		||||
from kmk.extensions.RGB import RGB, AnimationModes
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.modules.split import Split, SplitSide, SplitType
 | 
			
		||||
 | 
			
		||||
led = digitalio.DigitalInOut(board.GP25)
 | 
			
		||||
@@ -20,7 +20,7 @@ keyboard = KMKKeyboard()
 | 
			
		||||
keyboard.tap_time = 100
 | 
			
		||||
 | 
			
		||||
layers_ext = Layers()
 | 
			
		||||
modtap_ext = ModTap()
 | 
			
		||||
holdtap_ext = HoldTap()
 | 
			
		||||
 | 
			
		||||
# TODO Comment one of these on each side
 | 
			
		||||
split_side = SplitSide.LEFT
 | 
			
		||||
@@ -43,7 +43,7 @@ rgb_ext = RGB(
 | 
			
		||||
    animation_mode=AnimationModes.BREATHING_RAINBOW
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
keyboard.modules = [layers_ext, modtap_ext, split]
 | 
			
		||||
keyboard.modules = [layers_ext, holdtap_ext, split]
 | 
			
		||||
keyboard.extensions.append(MediaKeys())
 | 
			
		||||
keyboard.extensions.append(rgb_ext)
 | 
			
		||||
 | 
			
		||||
@@ -61,9 +61,9 @@ if split_side == SplitSide.LEFT:
 | 
			
		||||
LOWER = KC.MO(1)
 | 
			
		||||
RAISE = KC.MO(2)
 | 
			
		||||
ADJUST = KC.MO(3)
 | 
			
		||||
CT_TAB = KC.MT(KC.TAB, KC.LCTRL)
 | 
			
		||||
CT_QUOT = KC.MT(KC.QUOT, KC.LCTRL)
 | 
			
		||||
SF_MINS = KC.MT(KC.MINS, KC.LSHIFT)
 | 
			
		||||
CT_TAB = KC.HT(KC.TAB, KC.LCTRL)
 | 
			
		||||
CT_QUOT = KC.HT(KC.QUOT, KC.LCTRL)
 | 
			
		||||
SF_MINS = KC.HT(KC.MINS, KC.LSHIFT)
 | 
			
		||||
SG_PSCR = KC.LSFT(KC.LGUI(KC.PSCR))
 | 
			
		||||
SF_PSCR = KC.LSFT(KC.PSCR)
 | 
			
		||||
CG_RGHT = KC.LCTRL(KC.LGUI(KC.RGHT))
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ Retailers (USA)
 | 
			
		||||
Extensions enabled by default  
 | 
			
		||||
- [Layers](/docs/en/layers.md) Need more keys than switches? Use layers.
 | 
			
		||||
- [RGB](/docs/en/rgb.md) Light it up
 | 
			
		||||
- [ModTap](/docs/en/modtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
- [HoldTap](/docs/en/holdtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
 | 
			
		||||
Common Extensions
 | 
			
		||||
- [Power](/docs/en/power.md) Powersaving features for battery life
 | 
			
		||||
 
 | 
			
		||||
@@ -3,17 +3,17 @@ from kb import KMKKeyboard
 | 
			
		||||
from kmk.extensions.rgb import RGB
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
 | 
			
		||||
# Adding extensions
 | 
			
		||||
rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, val_limit=100, hue_default=190, sat_default=100, val_default=5)
 | 
			
		||||
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
layers_ext = Layers()
 | 
			
		||||
 | 
			
		||||
keyboard.modules = [layers_ext, modtap]
 | 
			
		||||
keyboard.modules = [layers_ext, holdtap]
 | 
			
		||||
keyboard.extensions = [rgb]
 | 
			
		||||
 | 
			
		||||
# Cleaner key names
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ Retailers (USA)
 | 
			
		||||
Extensions enabled by default  
 | 
			
		||||
- [Layers](/docs/en/layers.md) Need more keys than switches? Use layers.
 | 
			
		||||
- [RGB](/docs/en/rgb.md) Light it up
 | 
			
		||||
- [ModTap](/docs/en/modtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
- [HoldTap](/docs/en/holdtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
 | 
			
		||||
Common Extensions
 | 
			
		||||
- [Power](/docs/en/power.md) Powersaving features for battery life
 | 
			
		||||
 
 | 
			
		||||
@@ -3,17 +3,17 @@ from kb import KMKKeyboard
 | 
			
		||||
from kmk.extensions.rgb import RGB
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
 | 
			
		||||
# Adding extensions
 | 
			
		||||
rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, val_limit=100, hue_default=190, sat_default=100, val_default=5)
 | 
			
		||||
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
layers_ext = Layers()
 | 
			
		||||
 | 
			
		||||
keyboard.modules = [layers_ext, modtap]
 | 
			
		||||
keyboard.modules = [layers_ext, holdtap]
 | 
			
		||||
keyboard.extensions = [rgb]
 | 
			
		||||
 | 
			
		||||
# Cleaner key names
 | 
			
		||||
@@ -23,8 +23,8 @@ XXXXXXX = KC.NO
 | 
			
		||||
LOWER = KC.MO(1)
 | 
			
		||||
RAISE = KC.MO(2)
 | 
			
		||||
ADJUST = KC.LT(3, KC.SPC)
 | 
			
		||||
RSFT_ENT = KC.MT(KC.ENT, KC.RSFT)
 | 
			
		||||
RSFT_SPC = KC.MT(KC.SPC, KC.RSFT)
 | 
			
		||||
RSFT_ENT = KC.HT(KC.ENT, KC.RSFT)
 | 
			
		||||
RSFT_SPC = KC.HT(KC.SPC, KC.RSFT)
 | 
			
		||||
 | 
			
		||||
RGB_TOG = KC.RGB_TOG
 | 
			
		||||
RGB_HUI = KC.RGB_HUI
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ Retailers (USA)
 | 
			
		||||
Extensions enabled by default  
 | 
			
		||||
- [Layers](/docs/en/layers.md) Need more keys than switches? Use layers.
 | 
			
		||||
- [BLE_Split](/docs/en/split_keyboards.md) Connects halves without wires
 | 
			
		||||
- [ModTap](/docs/en/modtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
- [HoldTap](/docs/en/holdtap.md) Allows mod keys to act as different keys when tapped.
 | 
			
		||||
 | 
			
		||||
Common Extensions
 | 
			
		||||
- [Split](/docs/en/split_keyboards.md) Connects halves using a wire
 | 
			
		||||
 
 | 
			
		||||
@@ -13,14 +13,14 @@ from kmk.handlers.sequences import send_string
 | 
			
		||||
from kmk.hid import HIDModes
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.modules.split import Split, SplitSide, SplitType
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
layers_ext = Layers()
 | 
			
		||||
keyboard.modules.append(layers_ext)
 | 
			
		||||
keyboard.modules.append(modtap)
 | 
			
		||||
keyboard.modules.append(holdtap)
 | 
			
		||||
 | 
			
		||||
oled_ext = Oled(
 | 
			
		||||
    OledData(
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@ Once you've got the gist of it:
 | 
			
		||||
And to go even further:
 | 
			
		||||
- [Sequences](sequences.md) are used for sending multiple keystrokes in a single action
 | 
			
		||||
- [Layers](layers.md) can transform the whole way your keyboard is behaving with a single touch
 | 
			
		||||
- [ModTap](modtap.md) allow you to customize the way a key behaves whether it is tapped or hold, and [TapDance](tapdance.md) depending on the number of times it is pressed
 | 
			
		||||
- [HoldTap](holdtap.md) allow you to customize the way a key behaves whether it is tapped or hold, and [TapDance](tapdance.md) depending on the number of times it is pressed
 | 
			
		||||
 | 
			
		||||
Want to have fun features such as RGB, split keyboards and more? Check out what builtin [modules](modules.md) and [extensions](extensions.md) can do!
 | 
			
		||||
You can also get ideas from the various [user examples](https://github.com/KMKfw/kmk_firmware/tree/master/user_keymaps) that we provide and dig into our [documentation](README.md).
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@
 | 
			
		||||
 | 
			
		||||
- [Combos](combos.md): Adds chords and sequences
 | 
			
		||||
- [Layers](layers.md): Adds layer support (Fn key) to allow many more keys to be put on your keyboard
 | 
			
		||||
- [ModTap](modtap.md): Adds support for augmented modifier keys to act as one key when tapped, and modifier when held.
 | 
			
		||||
- [HoldTap](holdtap.md): Adds support for augmented modifier keys to act as one key when tapped, and modifier when held.
 | 
			
		||||
- [Mouse keys](mouse_keys.md): Adds mouse keycodes
 | 
			
		||||
- [OneShot](oneshot.md): Adds support for oneshot/sticky keys.
 | 
			
		||||
- [Power](power.md): Power saving features. This is mostly useful when on battery power.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
# CapsWord
 | 
			
		||||
The CapsWord module functions similar to caps lock but will deactivate automatically when its encounters a key that breaks the word or after inactivity timeout.
 | 
			
		||||
By default it will not deactivate CapsWord on numbers, alphabets, underscore, modifiers, minus, backspace and other keys like ModTap, Layers, etc.
 | 
			
		||||
By default it will not deactivate CapsWord on numbers, alphabets, underscore, modifiers, minus, backspace and other keys like HoldTap, Layers, etc.
 | 
			
		||||
Add it to your keyboard's modules list with:
 | 
			
		||||
 | 
			
		||||
```python
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ Here is all you need to use this module in your `main.py` / `code.py` file.
 | 
			
		||||
```python
 | 
			
		||||
from kmk.modules.encoder import EncoderHandler
 | 
			
		||||
encoder_handler = EncoderHandler()
 | 
			
		||||
keyboard.modules = [layers, modtap, encoder_handler]
 | 
			
		||||
keyboard.modules = [layers, holdtap, encoder_handler]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
2. Define the pins for each encoder: `pin_a`, `pin_b` for rotations, `pin_button` for the switch in the encoder. Set switch to `None` if the encoder's button is handled differently (as a part of matrix for example) or not at all. If you want to invert the direction of the encoder, set the 4th (optional) parameter `is_inverted` to `True`. 5th parameter is [encoder divisor](#encoder-resolution) (optional), it can be either `2` or `4`.
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ keyboard.modules.append(Layers())
 | 
			
		||||
 | 
			
		||||
## Custom HoldTap Behavior
 | 
			
		||||
`KC.TT` and `KC.LT` use the same heuristic to determine taps and holds as
 | 
			
		||||
ModTap. Check out the [ModTap doc](modtap.md) to find out more.
 | 
			
		||||
HoldTap. Check out the [HoldTap doc](holdtap.md) to find out more.
 | 
			
		||||
 | 
			
		||||
## Working with Layers
 | 
			
		||||
When starting out, care should be taken when working with layers, since it's possible to lock 
 | 
			
		||||
 
 | 
			
		||||
@@ -1,39 +1,39 @@
 | 
			
		||||
# ModTap Keycodes
 | 
			
		||||
Enabling ModTap will give you access to the following keycodes and can simply be
 | 
			
		||||
# HoldTap Keycodes
 | 
			
		||||
Enabling HoldTap will give you access to the following keycodes and can simply be
 | 
			
		||||
added to the modules list.
 | 
			
		||||
 | 
			
		||||
```python
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
# optional: set a custom tap timeout in ms
 | 
			
		||||
# modtap.tap_time = 300
 | 
			
		||||
keyboard.modules.append(modtap)
 | 
			
		||||
# holdtap.tap_time = 300
 | 
			
		||||
keyboard.modules.append(holdtap)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Keycodes
 | 
			
		||||
 | 
			
		||||
|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|
 | 
			
		||||
|`LCTL = KC.HT(KC.SOMETHING, KC.LCTRL)`                   |`LCTRL` if held `kc` if tapped                                   |
 | 
			
		||||
|`LSFT = KC.HT(KC.SOMETHING, KC.LSFT)`                    |`LSHIFT` if held `kc` if tapped                                  |
 | 
			
		||||
|`LALT = KC.HT(KC.SOMETHING, KC.LALT)`                    |`LALT` if held `kc` if tapped                                    |
 | 
			
		||||
|`LGUI = KC.HT(KC.SOMETHING, KC.LGUI)`                    |`LGUI` if held `kc` if tapped                                    |
 | 
			
		||||
|`RCTL = KC.HT(KC.SOMETHING, KC.RCTRL)`                   |`RCTRL` if held `kc` if tapped                                   |
 | 
			
		||||
|`RSFT = KC.HT(KC.SOMETHING, KC.RSFT)`                    |`RSHIFT` if held `kc` if tapped                                  |
 | 
			
		||||
|`RALT = KC.HT(KC.SOMETHING, KC.RALT)`                    |`RALT` if held `kc` if tapped                                    |
 | 
			
		||||
|`RGUI = KC.HT(KC.SOMETHING, KC.RGUI)`                    |`RGUI` if held `kc` if tapped                                    |
 | 
			
		||||
|`SGUI = KC.HT(KC.SOMETHING, KC.LSHFT(KC.LGUI))`          |`LSHIFT` and `LGUI` if held `kc` if tapped                       |
 | 
			
		||||
|`LCA = KC.HT(KC.SOMETHING, KC.LCTRL(KC.LALT))`           |`LCTRL` and `LALT` if held `kc` if tapped                        |
 | 
			
		||||
|`LCAG = KC.HT(KC.SOMETHING, KC.LCTRL(KC.LALT(KC.LGUI)))` |`LCTRL` and `LALT` and `LGUI` if held `kc` if tapped             |
 | 
			
		||||
|`MEH = KC.HT(KC.SOMETHING, KC.LCTRL(KC.LSFT(KC.LALT)))`  |`CTRL` and `LSHIFT` and `LALT` if held `kc` if tapped            |
 | 
			
		||||
|`HYPR = KC.HT(KC.SOMETHING, KC.HYPR)`                    |`LCTRL` and `LSHIFT` and `LALT` and `LGUI` if held `kc` if tapped|
 | 
			
		||||
 | 
			
		||||
## Custom HoldTap Behavior
 | 
			
		||||
The full ModTap signature is as follows:
 | 
			
		||||
The full HoldTap signature is as follows:
 | 
			
		||||
```python
 | 
			
		||||
KC.MT(KC.TAP, KC.HOLD, prefer_hold=True, tap_interrupted=False, tap_time=None, repeat=HoldTapRepeat.NONE)
 | 
			
		||||
KC.HT(KC.TAP, KC.HOLD, prefer_hold=True, tap_interrupted=False, tap_time=None, repeat=HoldTapRepeat.NONE)
 | 
			
		||||
```
 | 
			
		||||
* `prefer_hold`: decides which keycode the ModTap key resolves to when another
 | 
			
		||||
* `prefer_hold`: decides which keycode the HoldTap key resolves to when another
 | 
			
		||||
  key is pressed before the timeout finishes. When `True` the hold keycode is
 | 
			
		||||
  chosen, the tap keycode when `False`.
 | 
			
		||||
* `tap_interrupted`: decides if the timeout will interrupt at the first other
 | 
			
		||||
@@ -48,4 +48,4 @@ KC.MT(KC.TAP, KC.HOLD, prefer_hold=True, tap_interrupted=False, tap_time=None, r
 | 
			
		||||
  * `NONE`: no repeat action (default), everything works as expected.
 | 
			
		||||
  The `HoldTapRepeat` enum must be imported from `kmk.modules.holdtap`.
 | 
			
		||||
 | 
			
		||||
Each of these parameters can be set for every ModTap key individually.
 | 
			
		||||
Each of these parameters can be set for every HoldTap key individually.
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ modules are
 | 
			
		||||
- [Combos](combos.md): Adds chords and sequences
 | 
			
		||||
- [Layers](layers.md): Adds layer support (Fn key) to allow many more keys to be
 | 
			
		||||
put on your keyboard.
 | 
			
		||||
- [ModTap](modtap.md): Adds support for augmented modifier keys to act as one key
 | 
			
		||||
- [HoldTap](holdtap.md): Adds support for augmented modifier keys to act as one key
 | 
			
		||||
when tapped, and modifier when held.
 | 
			
		||||
- [Mouse keys](mouse_keys.md): Adds mouse keycodes.
 | 
			
		||||
- [OneShot](oneshot.md): Adds support for oneshot/sticky keys.
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
Split keyboards are mostly the same as unsplit. Wired UART is fully supported,
 | 
			
		||||
and testing of Bluetooth splits, though we don't currently offer support for this.
 | 
			
		||||
 | 
			
		||||
Notice that this Split module must be added after the ModTap module to the keyboard.modules.
 | 
			
		||||
Notice that this Split module must be added after the HoldTap module to the keyboard.modules.
 | 
			
		||||
 | 
			
		||||
## Drive names
 | 
			
		||||
As you will have two circuitpython drives to update regularly, it is adviced to rename them to make
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@ EXAMPLE_TD = KC.TD(
 | 
			
		||||
    # Tap once for "a"
 | 
			
		||||
    KC.A,
 | 
			
		||||
    # Tap twice for "b", or tap and hold for "left control"
 | 
			
		||||
    KC.MT(KC.B, KC.LCTL, prefer_hold=False),
 | 
			
		||||
    KC.HT(KC.B, KC.LCTL, prefer_hold=False),
 | 
			
		||||
    # Tap three times to send a raw string via macro
 | 
			
		||||
    send_string('macros in a tap dance? I think yes'),
 | 
			
		||||
    # Tap four times to toggle layer index 1, tap 3 times and hold for 3s to
 | 
			
		||||
 
 | 
			
		||||
@@ -80,7 +80,7 @@ QMK チームが提供している手配線キーボード用の[ガイド](http
 | 
			
		||||
- [シーケンス](sequences.md) 一つのアクションで複数のキーストロークを送信するために使用します。
 | 
			
		||||
- [レイヤー](layers.md)でタッチ一つでキーボードの全体の動きを変えることができます。
 | 
			
		||||
 | 
			
		||||
- [モドタップ](modtap.md) でキーの押し/長押しの動作を設定し、何回押されたかによって[タップダンス](tapdance.md)を設定します。
 | 
			
		||||
- [モドタップ](holdtap.md) でキーの押し/長押しの動作を設定し、何回押されたかによって[タップダンス](tapdance.md)を設定します。
 | 
			
		||||
 | 
			
		||||
RGB や分裂型などの機能を楽しめたい場合は、ビルトイン[モジュール](modules.md)と[拡張機能](extensions.md)を見てみてください!
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -101,7 +101,7 @@ E para ir mais além:
 | 
			
		||||
  só.
 | 
			
		||||
- [Camadas](layers.md) podem transformar totalmente como seu teclado age com um
 | 
			
		||||
  simples toque.
 | 
			
		||||
- [ModTap](modtap.md) te permite customizar a maneira que uma tecla age quando é
 | 
			
		||||
- [HoldTap](holdtap.md) te permite customizar a maneira que uma tecla age quando é
 | 
			
		||||
  pressionada ou "segurada"; e o
 | 
			
		||||
- [TapDance](tapdance.md) dependendo do número de vezes que ela é pressionada.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,27 +1,27 @@
 | 
			
		||||
# Keycodes ModTap
 | 
			
		||||
# Keycodes HoldTap
 | 
			
		||||
 | 
			
		||||
Habilitar o ModTap (adicionando-o à lista de módulos) te dará acesso aos
 | 
			
		||||
Habilitar o HoldTap (adicionando-o à lista de módulos) te dará acesso aos
 | 
			
		||||
keycodes abaixo:
 | 
			
		||||
 | 
			
		||||
```python
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
keyboard.modules.append(ModTap())
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
keyboard.modules.append(HoldTap())
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Keycodes
 | 
			
		||||
 | 
			
		||||
| Novo Keycode                                           | Descrição                                                       |
 | 
			
		||||
|--------------------------------------------------------|-----------------------------------------------------------------|
 | 
			
		||||
| LCTL = KC.MT(KC.SOMETHING, KC.LCTRL)                   | `LCTRL` se segurado `kc` se tocado                              |
 | 
			
		||||
| LSFT = KC.MT(KC.SOMETHING, KC.LSFT)                    | `LSHIFT` se segurado `kc` se tocado                             |
 | 
			
		||||
| LALT = KC.MT(KC.SOMETHING, KC.LALT)                    | `LALT` se segurado `kc` se tocado                               |
 | 
			
		||||
| LGUI = KC.MT(KC.SOMETHING, KC.LGUI)                    | `LGUI` se segurado `kc` se tocado                               |
 | 
			
		||||
| RCTL = KC.MT(KC.SOMETHING, KC.RCTRL)                   | `RCTRL` se segurado `kc` se tocado                              |
 | 
			
		||||
| RSFT = KC.MT(KC.SOMETHING, KC.RSFT)                    | `RSHIFT` se segurado `kc` se tocado                             |
 | 
			
		||||
| RALT = KC.MT(KC.SOMETHING, KC.RALT)                    | `RALT` se segurado `kc` se tocado                               |
 | 
			
		||||
| RGUI = KC.MT(KC.SOMETHING, KC.RGUI)                    | `RGUI` se segurado `kc` se tocado                               |
 | 
			
		||||
| SGUI = KC.MT(KC.SOMETHING, KC.LSHFT(KC.LGUI))          | `LSHIFT` e `LGUI` se segurado `kc` se tocado                    |
 | 
			
		||||
| LCA = KC.MT(KC.SOMETHING, KC.LCTRL(KC.LALT))           | `LCTRL` e `LALT` se segurado `kc` se tocado                     |
 | 
			
		||||
| LCAG = KC.MT(KC.SOMETHING, KC.LCTRL(KC.LALT(KC.LGUI))) | `LCTRL` e `LALT` e `LGUI` se segurado `kc` se tocado            |
 | 
			
		||||
| MEH = KC.MT(KC.SOMETHING, KC.LCTRL(KC.LSFT(KC.LALT)))  | `CTRL` e `LSHIFT` e `LALT` se segurado `kc` se tocado           |
 | 
			
		||||
| HYPR = KC.MT(KC.SOMETHING, KC.HYPR)                    | `LCTRL` e `LSHIFT` e `LALT` e `LGUI` se segurado `kc` if tapped |
 | 
			
		||||
| LCTL = KC.HT(KC.SOMETHING, KC.LCTRL)                   | `LCTRL` se segurado `kc` se tocado                              |
 | 
			
		||||
| LSFT = KC.HT(KC.SOMETHING, KC.LSFT)                    | `LSHIFT` se segurado `kc` se tocado                             |
 | 
			
		||||
| LALT = KC.HT(KC.SOMETHING, KC.LALT)                    | `LALT` se segurado `kc` se tocado                               |
 | 
			
		||||
| LGUI = KC.HT(KC.SOMETHING, KC.LGUI)                    | `LGUI` se segurado `kc` se tocado                               |
 | 
			
		||||
| RCTL = KC.HT(KC.SOMETHING, KC.RCTRL)                   | `RCTRL` se segurado `kc` se tocado                              |
 | 
			
		||||
| RSFT = KC.HT(KC.SOMETHING, KC.RSFT)                    | `RSHIFT` se segurado `kc` se tocado                             |
 | 
			
		||||
| RALT = KC.HT(KC.SOMETHING, KC.RALT)                    | `RALT` se segurado `kc` se tocado                               |
 | 
			
		||||
| RGUI = KC.HT(KC.SOMETHING, KC.RGUI)                    | `RGUI` se segurado `kc` se tocado                               |
 | 
			
		||||
| SGUI = KC.HT(KC.SOMETHING, KC.LSHFT(KC.LGUI))          | `LSHIFT` e `LGUI` se segurado `kc` se tocado                    |
 | 
			
		||||
| LCA = KC.HT(KC.SOMETHING, KC.LCTRL(KC.LALT))           | `LCTRL` e `LALT` se segurado `kc` se tocado                     |
 | 
			
		||||
| LCAG = KC.HT(KC.SOMETHING, KC.LCTRL(KC.LALT(KC.LGUI))) | `LCTRL` e `LALT` e `LGUI` se segurado `kc` se tocado            |
 | 
			
		||||
| MEH = KC.HT(KC.SOMETHING, KC.LCTRL(KC.LSFT(KC.LALT)))  | `CTRL` e `LSHIFT` e `LALT` se segurado `kc` se tocado           |
 | 
			
		||||
| HYPR = KC.HT(KC.SOMETHING, KC.HYPR)                    | `LCTRL` e `LSHIFT` e `LALT` e `LGUI` se segurado `kc` if tapped |
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ módulos oferecidos correntemente são;
 | 
			
		||||
 | 
			
		||||
- [Layers](layers.md): Acrescenta suporte a camadas (Tecla Fn) para permitir
 | 
			
		||||
colocar bem mais teclas no seu teclado.
 | 
			
		||||
- [ModTap](modtap.md): Acrescenta suporte para teclas modificadoras que agem
 | 
			
		||||
- [HoldTap](holdtap.md): Acrescenta suporte para teclas modificadoras que agem
 | 
			
		||||
como teclas comuns ao serem tocadas, mas como modificadores quando seguradas.
 | 
			
		||||
- [Power](power.md): Economia de energia. Este é mais útil quando usando baterias.
 | 
			
		||||
- [Split](split_keyboards.md): Teclados repartidos em dois. Tão ergonômicos!
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ from kmk.keys import make_argumented_key
 | 
			
		||||
from kmk.modules.holdtap import HoldTap, HoldTapKeyMeta
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ModTap(HoldTap):
 | 
			
		||||
class HoldTap(HoldTap):
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        super().__init__()
 | 
			
		||||
        make_argumented_key(
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ import unittest
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.holdtap import HoldTapRepeat
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.modules.oneshot import OneShot
 | 
			
		||||
from tests.keyboard_test import KeyboardTest
 | 
			
		||||
 | 
			
		||||
@@ -11,9 +11,9 @@ from tests.keyboard_test import KeyboardTest
 | 
			
		||||
class TestHoldTap(unittest.TestCase):
 | 
			
		||||
    def test_holdtap(self):
 | 
			
		||||
        keyboard = KeyboardTest(
 | 
			
		||||
            [Layers(), ModTap(), OneShot()],
 | 
			
		||||
            [Layers(), HoldTap(), OneShot()],
 | 
			
		||||
            [
 | 
			
		||||
                [KC.MT(KC.A, KC.LCTL), KC.LT(1, KC.B), KC.C, KC.D, KC.OS(KC.E)],
 | 
			
		||||
                [KC.HT(KC.A, KC.LCTL), KC.LT(1, KC.B), KC.C, KC.D, KC.OS(KC.E)],
 | 
			
		||||
                [KC.N1, KC.N2, KC.N3, KC.N4, KC.N5],
 | 
			
		||||
            ],
 | 
			
		||||
            debug_enabled=False,
 | 
			
		||||
@@ -118,13 +118,13 @@ class TestHoldTap(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_holdtap_chain(self):
 | 
			
		||||
        keyboard = KeyboardTest(
 | 
			
		||||
            [ModTap()],
 | 
			
		||||
            [HoldTap()],
 | 
			
		||||
            [
 | 
			
		||||
                [
 | 
			
		||||
                    KC.N0,
 | 
			
		||||
                    KC.MT(KC.N1, KC.LCTL, tap_time=50),
 | 
			
		||||
                    KC.MT(KC.N2, KC.LSFT, tap_interrupted=True, tap_time=50),
 | 
			
		||||
                    KC.MT(
 | 
			
		||||
                    KC.HT(KC.N1, KC.LCTL, tap_time=50),
 | 
			
		||||
                    KC.HT(KC.N2, KC.LSFT, tap_interrupted=True, tap_time=50),
 | 
			
		||||
                    KC.HT(
 | 
			
		||||
                        KC.N3,
 | 
			
		||||
                        KC.LALT,
 | 
			
		||||
                        prefer_hold=False,
 | 
			
		||||
@@ -275,12 +275,12 @@ class TestHoldTap(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_holdtap_repeat(self):
 | 
			
		||||
        keyboard = KeyboardTest(
 | 
			
		||||
            [ModTap()],
 | 
			
		||||
            [HoldTap()],
 | 
			
		||||
            [
 | 
			
		||||
                [
 | 
			
		||||
                    KC.MT(KC.A, KC.B, repeat=HoldTapRepeat.ALL, tap_time=50),
 | 
			
		||||
                    KC.MT(KC.A, KC.B, repeat=HoldTapRepeat.TAP, tap_time=50),
 | 
			
		||||
                    KC.MT(KC.A, KC.B, repeat=HoldTapRepeat.HOLD, tap_time=50),
 | 
			
		||||
                    KC.HT(KC.A, KC.B, repeat=HoldTapRepeat.ALL, tap_time=50),
 | 
			
		||||
                    KC.HT(KC.A, KC.B, repeat=HoldTapRepeat.TAP, tap_time=50),
 | 
			
		||||
                    KC.HT(KC.A, KC.B, repeat=HoldTapRepeat.HOLD, tap_time=50),
 | 
			
		||||
                ]
 | 
			
		||||
            ],
 | 
			
		||||
            debug_enabled=False,
 | 
			
		||||
@@ -352,10 +352,10 @@ class TestHoldTap(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_oneshot(self):
 | 
			
		||||
        keyboard = KeyboardTest(
 | 
			
		||||
            [Layers(), ModTap(), OneShot()],
 | 
			
		||||
            [Layers(), HoldTap(), OneShot()],
 | 
			
		||||
            [
 | 
			
		||||
                [
 | 
			
		||||
                    KC.MT(KC.A, KC.LCTL),
 | 
			
		||||
                    KC.HT(KC.A, KC.LCTL),
 | 
			
		||||
                    KC.LT(1, KC.B),
 | 
			
		||||
                    KC.C,
 | 
			
		||||
                    KC.D,
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,7 @@ class TestTapDance(unittest.TestCase):
 | 
			
		||||
            [{KC.N1}, {KC.N1, KC.N4}, {KC.N4}, {}],
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def test_modtap(self):
 | 
			
		||||
    def test_holdtap(self):
 | 
			
		||||
        keyboard = self.keyboard
 | 
			
		||||
        t_within = self.t_within
 | 
			
		||||
        t_after = self.t_after
 | 
			
		||||
@@ -199,12 +199,12 @@ class TestTapDance(unittest.TestCase):
 | 
			
		||||
            [{KC.A}, {}, {KC.N5}, {}],
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def test_modtap_repeat(self):
 | 
			
		||||
    def test_holdtap_repeat(self):
 | 
			
		||||
        keyboard = self.keyboard
 | 
			
		||||
        t_after = self.t_after
 | 
			
		||||
 | 
			
		||||
        keyboard.test(
 | 
			
		||||
            'ModTap repeat',
 | 
			
		||||
            'HoldTap repeat',
 | 
			
		||||
            [
 | 
			
		||||
                (2, True),
 | 
			
		||||
                (2, False),
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ from kb import KMKKeyboard
 | 
			
		||||
from kmk.extensions.rgb import RGB
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
 | 
			
		||||
@@ -22,15 +22,15 @@ FN1 = 2
 | 
			
		||||
 | 
			
		||||
rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=16)
 | 
			
		||||
layers_ext = Layers()
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
 | 
			
		||||
keyboard.modules = [layers_ext, modtap]
 | 
			
		||||
keyboard.modules = [layers_ext, holdtap]
 | 
			
		||||
keyboard.extensions = [rgb_ext]
 | 
			
		||||
 | 
			
		||||
_______ = KC.TRNS
 | 
			
		||||
XXXXXXX = KC.NO
 | 
			
		||||
HOME = KC.MT(KC.HOME, KC.LSFT)
 | 
			
		||||
END = KC.MT(KC.END, KC.RSFT)
 | 
			
		||||
HOME = KC.HT(KC.HOME, KC.LSFT)
 | 
			
		||||
END = KC.HT(KC.END, KC.RSFT)
 | 
			
		||||
LEFT_LAY = KC.LT(FN1, KC.LEFT)
 | 
			
		||||
SHFT_INS = KC.LSFT(KC.INS)
 | 
			
		||||
SPC = KC.LT(FN1, KC.SPC)
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ from kmk.extensions.rgb import RGB
 | 
			
		||||
from kmk.handlers.sequences import send_string, simple_key_sequence
 | 
			
		||||
from kmk.keys import KC
 | 
			
		||||
from kmk.modules.layers import Layers
 | 
			
		||||
from kmk.modules.modtap import ModTap
 | 
			
		||||
from kmk.modules.holdtap import HoldTap
 | 
			
		||||
from kmk.modules.split import Split
 | 
			
		||||
 | 
			
		||||
keyboard = KMKKeyboard()
 | 
			
		||||
@@ -15,11 +15,11 @@ keyboard = KMKKeyboard()
 | 
			
		||||
keyboard.tap_time = 150
 | 
			
		||||
 | 
			
		||||
layers = Layers()
 | 
			
		||||
modtap = ModTap()
 | 
			
		||||
holdtap = HoldTap()
 | 
			
		||||
rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=27, val_limit=100, hue_default=190, sat_default=100, val_default=5)
 | 
			
		||||
split = Split()
 | 
			
		||||
 | 
			
		||||
keyboard.modules = [modtap, layers, split]
 | 
			
		||||
keyboard.modules = [holdtap, layers, split]
 | 
			
		||||
keyboard.extensions = [rgb_ext]
 | 
			
		||||
 | 
			
		||||
_______ = KC.TRNS
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ keyboard.keymap = [
 | 
			
		||||
        # Default
 | 
			
		||||
        KC.GESC,  KC.Q,    KC.W,    KC.E,    KC.R,    KC.T,    KC.Y,    KC.U,    KC.I,    KC.O,    KC.P,    KC.BSPC,
 | 
			
		||||
        KC.TAB,   KC.A,    KC.S,    KC.D,    KC.F,    KC.G,    KC.H,    KC.J,    KC.K,    KC.L,    KC.SCLN, KC.QUOT,
 | 
			
		||||
        KC.LSFT,  KC.Z,    KC.X,    KC.C,    KC.V,    KC.B,    KC.N,    KC.M,    KC.COMM, KC.DOT,  KC.SLSH, KC.MT(KC.BSLS, KC.LSFT),
 | 
			
		||||
        KC.LSFT,  KC.Z,    KC.X,    KC.C,    KC.V,    KC.B,    KC.N,    KC.M,    KC.COMM, KC.DOT,  KC.SLSH, KC.HT(KC.BSLS, KC.LSFT),
 | 
			
		||||
        KC.LCTRL, KC.LGUI, KC.LALT, LOWER,   KC.ENT,  KC.SPC,  KC.SPC,  UP_HYP,  KC.LEFT, KC.DOWN, KC.UP,   KC.RGHT,
 | 
			
		||||
    ],
 | 
			
		||||
    [
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user