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
ouUnicodeMode.IBUS
. - Mac:
UnicodeMode.MACOS
ouUnicodeMode.OSX
ouUnicodeMode.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>]