Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

更新到qmk主分支 #2

Merged
merged 98 commits into from
Mar 26, 2022
Merged
Changes from 1 commit
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
40d6766
[Keyboard] Add Y&R Studio zhou65 keyboard (#14192)
jiaxin96 Mar 8, 2022
65eb0f9
[keymap] Add via support for Iskar (#16575)
drewpyun Mar 8, 2022
b593cfc
`qmk info`: Nicer rendering of big-ass enter (#16541)
fauxpark Mar 8, 2022
d38696a
[Keyboard] Add Rama Works M4-A (#16570)
nautxx Mar 8, 2022
3347b63
handwired/misterdeck refactor (#16572)
fauxpark Mar 8, 2022
022e1fd
Add Big Switch Seat (#16524)
nooges Mar 8, 2022
5244b13
Fix yandrstudio/zhou65 (#16589)
waffle87 Mar 9, 2022
ed169a6
Correct order of takashicompany/dogtag info.json (#16591)
zvecr Mar 9, 2022
c5c5d37
[Keymap] Added RGB_Matrix effect mode for naked48/j73gl (#16578)
Salicylic-acid3 Mar 9, 2022
6ab5a7d
[Keymap] Personal keymap for crkbd (#16546)
Jpe230 Mar 9, 2022
dc67fd9
Various improvements for the AnnePro2 (#16579)
Jpe230 Mar 9, 2022
db16271
Add Gergoplex keymap for tgrosinger (#15148)
tgrosinger Mar 9, 2022
caeb213
Add macOS-friendly keymap for GMMK Pro (ANSI) (#14333)
zvuc Mar 9, 2022
708b3f9
[Keyboard] Size reduction for kbdfans/kbd67/mkiirgb_iso (#16601)
waffle87 Mar 10, 2022
8bcb77c
Personalizacion del teclado de AdG (#15738)
maherma-adg Mar 10, 2022
9d0153d
[keyboard]Add v1 to jones keyboard (#14405)
jpskenn Mar 10, 2022
dc8db65
[KEYBOARD] keyboardio/atreus: VIA support (#16604)
haoxiangliew Mar 10, 2022
bd70f52
Remove `matrix_key_count()` (#16603)
fauxpark Mar 10, 2022
265b96a
[Keyboard] Add omega4 (#16464)
makenova Mar 10, 2022
61a8a60
[Keyboard] Add MNK65 (#16400)
kopibeng Mar 10, 2022
98da119
era1112 keymap for preonic (#16064)
era1112 Mar 10, 2022
fc7a41f
[Keyboard] lily58/glow_enc (#16101)
LVladymyr Mar 10, 2022
b33fdc2
add chofstede keymap for gmmk/pro/iso (#16045)
chofstede Mar 10, 2022
6c40b68
[Docs] Include ASCII diagram to explain tap-hold modes (#15873)
wongjiahau Mar 10, 2022
b75f669
CLI: Fix 'cd' subcommand on Windows (#16610)
Erovia Mar 10, 2022
ee71362
Personal user space and CRKBD R2G keymap (#15888)
RMeli Mar 10, 2022
003231a
[Keyboard] Add Mechlovin Infinity87.5 PCB (#15163)
mechlovin Mar 11, 2022
74b24e4
DZ64RGB: add info.json (#16616)
noroadsleft Mar 11, 2022
3f79708
Acheron Elongate Delta: add info.json (#16615)
noroadsleft Mar 11, 2022
86b1231
docs: fix code sample (#16623)
Kriechi Mar 12, 2022
20424fd
[Keyboard] Add Glitch (#16444)
matthewdias Mar 13, 2022
dccb571
[Keyboard] Add damapad (#16443)
matthewdias Mar 13, 2022
08794fe
[Keyboard] add missing endif in glitch keyboard (#16629)
waffle87 Mar 13, 2022
1f63dbf
[Keymap] Update personal crkbd keymap (#16624)
Jpe230 Mar 13, 2022
b906af0
helix:edvorakjp keymap change to use split_common (#16532)
mtei Mar 13, 2022
109c60f
[Keyboard] Add support for Jels60 (#16605)
Jels02 Mar 13, 2022
8fe3864
[Keyboard] Add "Uno" rev2 (#14071)
spencer-p Mar 13, 2022
df37705
USB-USB converter cleanup (#16618)
fauxpark Mar 13, 2022
c0f4179
Move keyboard USB IDs and strings to data driven: 0-9 (#16481)
fauxpark Mar 13, 2022
dde4120
ISP flashing guide: add instructions for flashing STM32duino bootload…
fauxpark Mar 13, 2022
8d90cf3
Fix 40percentclub USB descriptors (#16638)
waffle87 Mar 14, 2022
c17323b
bolsa/damapad - Fix missing layout macro (#16639)
zvecr Mar 14, 2022
5fb269b
keebio/iris: Add ifdefs to encoder callbacks (#16642)
fauxpark Mar 14, 2022
6a6a333
Disable RGB matrix pixel animations for some boards (#16643)
fauxpark Mar 14, 2022
a12d58c
[Keyboard] Add BAMFK-1 (#16409)
nooges Mar 14, 2022
6c11579
[Keyboard] Add via keymap to AL1 (#16499)
Yakbats Mar 14, 2022
a939adb
Sentence correction (#16650)
ethsol Mar 14, 2022
7fde309
[Keyboard] Add Kay65 PCB by Team Mechlovin' (#15565)
mechlovin Mar 15, 2022
04826d1
[Keyboard] evancookaudio sleepingdinosaur v2 (#16625)
evanmcook Mar 15, 2022
5e5047f
[Keyboard westm68 rev1 and fine tune westm boards (#16528)
wttsn Mar 15, 2022
36ddb56
[Keyboard] Fix mechlovin/kay65 (#16653)
waffle87 Mar 15, 2022
1ef4e30
Fix evancookaudio/sleepingdinosaur (#16654)
waffle87 Mar 15, 2022
87bb1a3
[Keyboard] Add Bacca70 keyboard (#16626)
thompson-ele Mar 15, 2022
92a9e7c
[Keyboard] Adding Gerald65 (#15872)
PaperCraneKeyboards Mar 15, 2022
9aaf4a5
Add split keyboard example for Bootmagic Lite (#16349)
filterpaper Mar 15, 2022
e94c2df
[Keyboard] Io mini1800 (#16115)
jpuerto96 Mar 15, 2022
e9bf95e
[Keyboard] Fix westm/westm68 compliation errors (#16657)
waffle87 Mar 15, 2022
46e85de
Add merge workflow for XAP branch (#16652)
zvecr Mar 15, 2022
764dc18
Remove `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION` from keyboard confi…
fauxpark Mar 15, 2022
a808c29
[Keymap] Planck Keymap: tomkonidas (#15869)
tomkonidas Mar 15, 2022
77aafd8
[Keyboard] Add Dolice keyboard (#16186)
ebastler Mar 15, 2022
8bffc61
Ensure dependent CI workflows run (#16662)
zvecr Mar 15, 2022
f6f4d85
yugo_m enhancement: include all available key positions (#16216)
an-achronism Mar 16, 2022
fded67f
[MB-65S] Change layout to follow change request from OEM (#16663)
AnthonyNguyen168 Mar 16, 2022
a867cfc
Update the AL1 Vender ID (#16660)
Yakbats Mar 16, 2022
8c5779f
Fix m3n3van and minim keyboard names in keymap JSON (#16665)
fauxpark Mar 16, 2022
d5d2a01
gboards/butterstick: move steno rules config to keymap level (#16666)
fauxpark Mar 16, 2022
193dd01
[Keyboard] Add nullbits TIDBIT (#15182)
jaygreco Mar 16, 2022
417f089
Print out generated files during build (#16672)
zvecr Mar 16, 2022
e5823b5
[CLI] Add common util for dumping generated content (#16674)
zvecr Mar 18, 2022
ed773ab
Relocate CLI git interactions (#16682)
zvecr Mar 18, 2022
7732425
annepro2: Add more LED functionalities to default-layer-indicators (#…
Metaln00b Mar 18, 2022
61c644f
[Keyboard] Update Tractyl Manuform config files (#16684)
drashna Mar 18, 2022
06b6729
[Keymap] Update some code and keyboard rules (#16680)
stanrc85 Mar 19, 2022
e354cbe
`device_ver` -> `device_version` for some more boards (#16685)
fauxpark Mar 19, 2022
3502bbb
Fix typo in docs/ref_functions.md (#16690)
leviport Mar 19, 2022
047ef3c
VUSB - Use correct endpoint poll for VIA (#16691)
zvecr Mar 19, 2022
2f095b8
qmk.path.FileType: fix argument handling (#16693)
fauxpark Mar 19, 2022
6125f7b
Add MutePad keyboard (Handwired) (#16590)
Mar 20, 2022
1bc8793
Add Rart75 hotswap and support via (#16619)
alabahuy Mar 20, 2022
669ad3c
Droxx keymap (#16607)
furfuzz Mar 20, 2022
7eb6f86
[Keyboard] add oled_task_kb() into keyboards/helix/rev2/rev2.c (#16697)
mtei Mar 21, 2022
f610011
[Keymap] personal keymap, ergodox_ez and atreus / dvorak_42_key (#16695)
luc-vocab Mar 22, 2022
c803c50
[Keyboard] Add Axolstudio Foundation Gamma (#15948)
str-dst Mar 23, 2022
28bd777
[Keyboard] Graystudio Apollo80 (#16469)
ChrisBeswick Mar 23, 2022
a772a7f
[Keymap] Input Club's Whitefox "True Fox" (#16711)
0x647262 Mar 23, 2022
74f4682
[Keyboard] Waffling60 - readme update (#16707)
4pplet Mar 23, 2022
92d38c3
[Keymap] Add dhertz keychron map v0 (#16571)
Dhertz Mar 23, 2022
08aa54b
[Keymap] Xiudi XD75 Finnish/Swedish keymap (#16311)
pallarim Mar 23, 2022
4a3b410
[Bug] Fix unused variable error when using ChibiOS Bitbang serial dri…
drashna Mar 23, 2022
55b3b2b
[Keyboard] Add support for XT60 (#16708)
kopibeng Mar 23, 2022
e335d62
[Keyboard] Add keyboard level encoder function for GMMK Pro (#16721)
waffle87 Mar 24, 2022
980a1b0
[Keymap] ergodox: updating osx_whiskey_tango_foxtrot_capslock to use …
nathanejohnson Mar 24, 2022
f7a5ec2
update kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala keymap (#16725)
carlosala Mar 24, 2022
efc9c52
CLI: Add 'via2json' subcommand (#16468)
Erovia Mar 24, 2022
53a88af
[Keymap] corne and planck keyboards keymaps (#15570)
antosha417 Mar 26, 2022
7e0dde1
[Keyboard] Add YDKB Grape PCB (#16661)
somepin Mar 26, 2022
084df6a
[Keyboard] Add nt210 (#16461)
evyd13 Mar 26, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[Docs] Include ASCII diagram to explain tap-hold modes (qmk#15873)
* [Docs] Include ASCII diagram to explain tap-hold modes

* [Docs]: add examples for Default mode for Tap Hold

* [Docs] fix some wrong explanation in tap_hold.md
  • Loading branch information
wongjiahau authored Mar 10, 2022
commit 6c40b6856bb843e39bf0992164f41e29ce7ea72c
115 changes: 115 additions & 0 deletions docs/tap_hold.md
Original file line number Diff line number Diff line change
@@ -126,6 +126,61 @@ The code which decides between the tap and hold actions of dual-role keys suppor

Note that until the tap-or-hold decision completes (which happens when either the dual-role key is released, or the tapping term has expired, or the extra condition for the selected decision mode is satisfied), key events are delayed and not transmitted to the host immediately. The default mode gives the most delay (if the dual-role key is held down, this mode always waits for the whole tapping term), and the other modes may give less delay when other keys are pressed, because the hold action may be selected earlier.

### Default Mode
Example sequence 1 (the `L` key is also mapped to `KC_RGHT` on layer 2):

```
TAPPING_TERM
+---------------|--------------------+
| +-------------|-------+ |
| | LT(2, KC_A) | | |
| +-------------|-------+ |
| | +--------------+ |
| | | KC_L | |
| | +--------------+ |
+---------------|--------------------+
```
The above sequence would send a `KC_RGHT`, since `LT(2, KC_A)` is held longer than the `TAPPING_TERM`.

---

Example sequence 2 (the `L` key is also mapped to `KC_RGHT` on layer 2):

```
TAPPING_TERM
+-----------------------------|------+
| +---------------+ | |
| | LT(2, KC_A) | | |
| +---------------+ | |
| +--------------+ | |
| | KC_L | | |
| +--------------+ | |
+-----------------------------|------+
```
The above sequence will not send `KC_RGHT` but `KC_A` `KC_L` instead, since `LT(2, KC_A)` is not held longer than the `TAPPING_TERM`.

---

Example sequence 3 (Mod Tap):

```
TAPPING_TERM
+---------------------------|--------+
| +-------------+ | |
| | SFT_T(KC_A) | | |
| +-------------+ | |
| +--------------+ | |
| | KC_X | | |
| +--------------+ | |
+---------------------------|--------+
```
Based previous examples, you might have expected the output of the above sequence to be `KC_A` `KC_X`
since `SFT_T(KC_A)` is NOT held longer than the `TAPPING_TERM`.
However, the actual output would be capital `X` (`SHIFT` + `x`) due to reasons
explained under [Ignore Mod Tap Interrupt](#ignore-mod-tap-interrupt).



### Permissive Hold

The “permissive hold” mode can be enabled for all dual-role keys by adding the corresponding option to `config.h`:
@@ -145,6 +200,18 @@ An example of a sequence which is affected by the “permissive hold” mode:
- `KC_L` Up
- `LT(2, KC_A)` Up

```
TAPPING_TERM
+---------------------------|--------+
| +----------------------+ | |
| | LT(2, KC_A) | | |
| +----------------------+ | |
| +--------------+ | |
| | KC_L | | |
| +--------------+ | |
+---------------------------|--------+
```

Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `PERMISSIVE_HOLD` option enabled, the Layer Tap key is considered as a layer switch if another key is tapped, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). We could describe this sequence as a “nested press” (the modified key's key down and key up events are “nested” between the dual-role key's key down and key up events).

However, this slightly different sequence will not be affected by the “permissive hold” mode:
@@ -154,6 +221,18 @@ However, this slightly different sequence will not be affected by the “permiss
- `LT(2, KC_A)` Up
- `KC_L` Up

```
TAPPING_TERM
+---------------------------|--------+
| +-------------+ | |
| | LT(2, KC_A) | | |
| +-------------+ | |
| +--------------+ | |
| | KC_L | | |
| +--------------+ | |
+---------------------------|--------+
```

In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the “permissive hold” mode will still choose the tap action for the dual-role key, and the sequence will be registered as `al` by the host. We could describe this as a “rolling press” (the two keys' key down and key up events behave as if you were rolling a ball across the two keys, first pressing each key down in sequence and then releasing them in the same order).

?> The `PERMISSIVE_HOLD` option also affects Mod Tap keys, but this may not be noticeable if you do not also enable the `IGNORE_MOD_TAP_INTERRUPT` option for those keys, because the default handler for Mod Tap keys also considers both the “nested press” and “rolling press” sequences like shown above as a modifier hold, not the tap action. If you do not enable `IGNORE_MOD_TAP_INTERRUPT`, the effect of `PERMISSIVE_HOLD` on Mod Tap keys would be limited to reducing the delay before the key events are made visible to the host.
@@ -198,6 +277,18 @@ An example of a sequence which is affected by the “hold on other key press”
- `LT(2, KC_A)` Up
- `KC_L` Up

```
TAPPING_TERM
+---------------------------|--------+
| +-------------+ | |
| | LT(2, KC_A) | | |
| +-------------+ | |
| +--------------+ | |
| | KC_L | | |
| +--------------+ | |
+---------------------------|--------+
```

Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `HOLD_ON_OTHER_KEY_PRESS` option enabled, the Layer Tap key is considered as a layer switch if another key is pressed, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2).

?> The `HOLD_ON_OTHER_KEY_PRESS` option also affects Mod Tap keys, but this may not be noticeable if you do not also enable the `IGNORE_MOD_TAP_INTERRUPT` option for those keys, because the default handler for Mod Tap keys also considers the “rolling press” sequence like shown above as a modifier hold, not the tap action. If you do not enable `IGNORE_MOD_TAP_INTERRUPT`, the effect of `HOLD_ON_OTHER_KEY_PRESS` on Mod Tap keys would be limited to reducing the delay before the key events are made visible to the host.
@@ -245,6 +336,18 @@ An example of a sequence which will be affected by the `IGNORE_MOD_TAP_INTERRUPT
- `SFT_T(KC_A)` Up
- `KC_X` Up

```
TAPPING_TERM
+---------------------------|--------+
| +-------------+ | |
| | SFT_T(KC_A) | | |
| +-------------+ | |
| +--------------+ | |
| | KC_X | | |
| +--------------+ | |
+---------------------------|--------+
```

Normally, this would send a capital `X` (`SHIFT`+`x`), even if the sequence is performed faster than the `TAPPING_TERM`. However, if the `IGNORE_MOD_TAP_INTERRUPT` option is enabled, the `SFT_T(KC_A)` key must be held longer than the `TAPPING_TERM` to register the hold action. A quick tap will output `ax` in this case, while a hold will still output a capital `X` (`SHIFT`+`x`).

However, if the `HOLD_ON_OTHER_KEY_PRESS` option is enabled in addition to `IGNORE_MOD_TAP_INTERRUPT`, the above sequence will again send a capital `X` (`SHIFT`+`x`) even if performed faster that the `TAPPING_TERM`. The difference from the default configuration is that by default the host will receive the key events only after the `SFT_T(KC_A)` key is released, but with the `HOLD_ON_OTHER_KEY_PRESS` option the host will start receiving key events when the `KC_X` key is pressed.
@@ -327,6 +430,18 @@ Holding and releasing a dual function key without pressing another key will resu

For instance, holding and releasing `LT(2, KC_SPC)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPC` instead.

```
TAPPING_TERM
+-----------------|------------------+
| +---------------|-------+ |
| | LT(2, KC_SPC) | | |
| +---------------|-------+ |
| | |
| | |
| | |
+-----------------|------------------+
```

For more granular control of this feature, you can add the following to your `config.h`:

```c