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

94 lines
3.0 KiB
Markdown

# 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.)
```python
from kmk.handlers.sequences import send_string
WOW = send_string("Wow, KMK is awesome!")
keyboard.keymap = [...WOW,...]
```
## 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](https://github.com/samhocevar/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:
```python
from kmk.handlers.sequences import unicode_string_sequence
FLIP = unicode_string_sequence('(ノಠ痊ಠ)ノ彡┻━┻')
keyboard.keymap = [...FLIP,...]
```
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:
```python
from kmk.handlers.sequences import compile_unicode_string_sequences as cuss
emoticons = cuss({
'BEER': r'🍺',
'HAND_WAVE': r'👋',
})
keymap = [...emoticons.BEER, emoticons.HAND_WAVE...]
```
> 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`.
```python
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 = [...TABLE_FLIP,...]
```