update modtap to holdtap
This commit is contained in:
parent
88c3616b6a
commit
a9de14ba6b
@ -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,
|
||||
],
|
||||
[
|
||||
|
Loading…
Reference in New Issue
Block a user