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.LINUXouUnicodeMode.IBUS. - Mac:
UnicodeMode.MACOSouUnicodeMode.OSXouUnicodeMode.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é umkmk.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>]