kmk_firmware/docs/ptBR/tapdance.md
2021-08-30 11:16:55 -07:00

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, and KC.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, ....], ....]