kmk_firmware/docs/ptBR/sequences.md

3.1 KiB

Sequências

Sequências são usadas para enviar múltiplos pressionamentos de teclas em uma única ação, e pode ser usado para coisas como caracteres Unicode (até mesmo emojis! 🇨🇦), geradores lorei epsum, disparo de efeitos colaterais (pense em iluminação, apitos, mineradores de criptomoedas otimizados para micro-controladores, etc.). Se você ainda não tem certeza do que é isso, a maioria dos fornecedores chama estes de "Macros", mas pode fazer muito mais se você quiser.

Enviar Strings

A sequência mais básica é send_string. Ela pode ser usada para enviar qualquer caractere do alfabeto inglês, e um conjunto de outras teclas "padrão" (Enter, espaço, ponto de exclamação, etc.)

from kmk.handlers.sequences import send_string

WOW = send_string("Wow, KMK is awesome!")

keyboard.keymap = [<other keycodes>, WOW, <other keycodes>]

Unicode

Antes de tentar enviar sequências de Unicode, certifique-se que você habilite o seu UnicodeMode. Você pode atribuir um valor inicial no seu keymap pela variável keyboard.unicode_mode.

São fornecidas teclas para mudar este modo em tempo de execução - por exemplo, KC.UC_MODE_LINUX.

Modos Unicode

No Linux, Unicode usa Ctrl-Shift-U, suportado pelo ibus e GTK+3. Usuários de ibus precisarão acrescentar IBUS_ENABLE_CTRL_SHIFT_U=1 aos seus ambientes (~/profile, ~/.bashrc, ~/.zshrc, ou o configurador do seu desktop).

No Windows, é necessário usar o WinCompose.

  • Linux : UnicodeMode.LINUX ou UnicodeMode.IBUS.
  • Mac: UnicodeMode.MACOS ou UnicodeMode.OSX ou UnicodeMode.RALT.
  • Windows: UnicodeMode.WINC.

Exemplos Unicode

Para enviar um símbolo Unicode:

from kmk.handlers.sequences import unicode_string_sequence

FLIP = unicode_string_sequence('(ノಠ痊ಠ)ノ彡┻━┻')

keyboard.keymap = [<other keycodes>, FLIP, <other keycodes>]

Se, em vez disso, você manter uma tabela de busca de suas sequências (talvez para atrelar emojis às teclas), isto também é suportado, mediante um processo extremamente prolixo:

from kmk.handlers.sequences import compile_unicode_string_sequences as cuss

emoticons = cuss({
    'BEER': r'🍺',
    'HAND_WAVE': r'👋',
})

keymap = [<other keycodes>, emoticons.BEER, emoticons.HAND_WAVE, <other keycodes>]

Um observador notará que a notação-de-ponto (dot notation) é suportada aqui, apesar de preencher um dicionário - o retorno de compile_unicode_string_sequences é um kmk.types.AttrDict, que você pode entender como uma visão somente-leitura sobre um dicionário acrescentando acesso baseado em atributos (dot notation).

Finalmente, se você precisa enviar pontos-de-código Unicode em modo bruto, isto é suportado também, mediante unicode_codepoint_sequence.

from kmk.handlers.sequences import unicode_codepoint_sequence

TABLE_FLIP = unicode_codepoint_sequence([
    "28", "30ce", "ca0", "75ca","ca0", "29",
    "30ce", "5f61", "253b", "2501", "253b",
])

keyboard.keymap = [<other keycodes>, TABLE_FLIP, <other keycodes>]