From 256c0f1c55335e78faa905f851873261ae71e25e Mon Sep 17 00:00:00 2001 From: xs5871 Date: Wed, 4 May 2022 17:05:25 +0000 Subject: [PATCH] update tapdance docs --- docs/tapdance.md | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/docs/tapdance.md b/docs/tapdance.md index 7384d08..05a9388 100644 --- a/docs/tapdance.md +++ b/docs/tapdance.md @@ -16,27 +16,18 @@ letter "b" will be held down until the tap dance key is released. To use this, you may want to define a `tap_time` value in your keyboard configuration. This is an integer in milliseconds, and defaults to `300`. +The timeout is reset after each tap and every tapdance sequence can also define +an individual `tap_time`. You'll then want to create a sequence of keys using `KC.TD(KC.SOMETHING, KC.SOMETHING_ELSE, MAYBE_THIS_IS_A_MACRO, WHATEVER_YO)`, and place it in your keymap somewhere. The only limits on how many keys can go in the sequence are, -theoretically, the amount of RAM your MCU/board has, and how fast you can mash -the physical key. Here's your chance to use all that button-mash video game -experience you've built up over the years. -[//]: # (The button mashing part has been 'fixed' by a timeout refresh per) -[//]: # (button press. The comedic sentiment is worth keeping though.) +theoretically, the amount of RAM your MCU/board has. -**NOTE**: Currently our basic tap dance implementation has some limitations that -are planned to be worked around "eventually", but for now are noteworthy: - -- The behavior of momentary layer switching within a tap dance sequence is - currently "undefined" at best, and will probably crash your keyboard. For now, - we strongly recommend avoiding `KC.MO` (or any other layer switch keys that - use momentary switch behavior - `KC.LM`, `KC.LT`, and `KC.TT`) -[//]: # (This also doesn't seem to be the case anymore; as long as the layer) -[//]: # (is transparent to the tap dance key.) -[//]: # (At least KC.MO is working as intended, other momentary actions haven't) -[//]: # (been tested.) +Tap dance supports all `HoldTap` based keys, like mod tap, layer tap, oneshot... +it will even honor every option set for those keys. +Individual timeouts and prefer hold behavior for every tap in the sequence? +Not a problem. Here's an example of all this in action: @@ -52,13 +43,20 @@ tapdance.tap_time = 750 keyboard.modules.append(tapdance) EXAMPLE_TD = KC.TD( - KC.A, # Tap once for "a" - KC.B, # Tap twice for "b" + # 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), # 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 - KC.TG(1), + # Tap four times to toggle layer index 1, tap 3 times and hold for 3s to + # momentary toggle layer index 1. + KC.TT(1, tap_time=3000), ) +# make the default tap time really short for this tap dance: +EXAMPLE_TD2 = KC.TD(KC.A, KC.B, tap_time=80) + + keyboard.keymap = [[ ...., EXAMPLE_TD, ....], ....] ```