2.5 KiB
Tapdance
Tapdance é uma forma de permitir que uma tecla física funcione como teclas/ações lógicas múltiplas sem usar camadas. Com tapdance básico, você pode disparar estas macros ou teclas "aninhadas" mediante uma série de toques (taps) da tecla física dentro de um tempo limite dado.
A ação "lógica" resultante funciona como qualquer outra tecla - ela pode ser
pressionada e liberada imediatamente, ou pode ser segurada. Por exemplo, tomemos
a tecla KC.TD(KC.A, KC.B)
. Se a tecla de tapdance é pressionada e liberada
rapidamente, a letra "a" é enviada. Se é tocada e liberada duas vezes
rapidamente, a letra "b" será enviada. Se é tocada e segurada uma vez, a letra
"a" será segurada até que a tecla de tapdance seja liberada. Se é tocada e
liberada uma vez rapidamente, e daí tocada e segurada (ambas as ações dentro do
tempo limite), a letra "b" será mantida até que a tecla de tapdance seja
liberada.
Para usar isso, você pode desejar definir um valor para tap_time
na
configuração de seu teclado. Este valor é um inteiro indicando o tempo em
milissegundos, e seu valor padrão é 300
.
Você pode então desejar criar uma sequência de teclas usando
KC.TD(KC.SOMETHING, KC.SOMETHING_ELSE, MAYBE_THIS_IS_A_MACRO, WHATEVER_YO)
, e
colocar em algum lugar. Os únicos limites em quantas teclas pode haver numa
sequência são, teoricamente, o montante de memória RAM na sua
microcontroladora/placa, e quão rápido você pode pressionar a tecla física. Eis
a sua chance de usar toda sua experiência de anos e anos estraçalhando o botão
nos videogames.
NOTE: Correntemente nossa implementação de tapdance têm algumas limitações, as quais pretendemos consertar "eventualmente", mas por ora é bom notar:
- O comportamento de troca momentânea de camadas em uma sequência de tapdance é
atualmente "indefinido" na melhor hipótese, e provavelmente vai quebrar seu
teclado. Por ora, recomendamos fortemente evitar
KC.MO
, bem como qualquer outra tecla de modificação de camada que use comportamento de troca momentânea -KC.LM
,KC.LT
, andKC.TT
.
Eis um exemplo de tudo isso em ação:
from kmk.keycodes import KC
from kmk.macros.simple import send_string
keyboard = KMKKeyboard()
keyboard.tap_time = 750
EXAMPLE_TD = KC.TD(
KC.A, # Tap once for "a"
KC.B, # Tap twice for "b"
# 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),
)
keyboard.keymap = [[ ...., EXAMPLE_TD, ....], ....]