kmk_firmware/docs/ptBR/porting_to_kmk.md
2022-04-09 14:40:40 -07:00

3.0 KiB

Portar para o KMK

Portar uma placa para o KMK é bastante simples, e segue o seguinte formato-base:

import board

from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard
from kmk.scanners import DiodeOrientation
{EXTENSIONS_IMPORT}

class KMKKeyboard(_KMKKeyboard):
{REQUIRED}
    extensions = []

REQUERIDO

Isto é projetado para ser substituído com os pinos de definição de seu teclado. Linhas, colunas e direção dos diodos (se houver) devem ser definidas dessa forma:

    row_pins = [board.p0_31, board.p0_29, board.p0_02, board.p1_15]
    col_pins = [board.p0_22, board.p0_24, board.p1_00, board.p0_11, board.p1_04]
    diode_orientation = DiodeOrientation.COL2ROW

Pinos Adicionais para Extensões

KMK inclui extensões embutidas para RGB e teclados repartidos, e para economia de energia. Se estes são aplicáveis ao seu teclado/micro-controlador, os pinos devem ser acrescentados aqui. Remeta às instruções na respectiva página de extensões sobre como adicioná-los. Se não pretende adicionar extensões, mantenha a lista vazia como mostrado.

Mapeamento Coordenado

Se seu teclado não é eletricamente construído como um quadrado (apesar que a maioria é), você pode fornecer o mapeamento diretamente. Um exemplo disso é o teclado Corne. Ele tem 12 colunas para 3 linhas, e 6 colunas para a linha inferior. Teclados repartidos são contados pelo total, não por parte separada. Isto seria mais ou menos assim:

from kmk.scanners import intify_coordinate as ic

    coord_mapping = []
    coord_mapping.extend(ic(0, x, 6) for x in range(6))
    coord_mapping.extend(ic(4, x, 6) for x in range(6))
    coord_mapping.extend(ic(1, x, 6) for x in range(6))
    coord_mapping.extend(ic(5, x, 6) for x in range(6))
    coord_mapping.extend(ic(2, x, 6) for x in range(6))
    coord_mapping.extend(ic(6, x, 6) for x in range(6))
    # And now, to handle R3, which at this point is down to just six keys
    coord_mapping.extend(ic(3, x, 6) for x in range(3, 6))
    coord_mapping.extend(ic(7, x, 6) for x in range(0, 3))

intify_coordinate é a maneira tradicional de gerar posições-chave. Aqui está uma versão equivalente, talvez visualmente mais explicativa:

coord_mapping = [
 0,  1,  2,  3,  4,  5,  24, 25, 26, 27, 28, 29,
 6,  7,  8,  9, 10, 11,  30, 31, 32, 33, 34, 35,
12, 13, 14, 15, 16, 17,  36, 37, 38, 39, 40, 41,
            21, 22, 23,  42, 43, 44,
]

Keymaps

Mapas de teclas (keymap) são organizados com listas de listas. Keycodes são adicionados para cada tecla de cada camada. Veja keycodes para mais detalhes sobre que keycodes estão disponíveis. Se usar camadas ou outras extensões, remeta também à página de extensões para keycodes adicionais.

from kb import KMKKeyboard
from kmk.keys import KC

keyboard = KMKKeyboard()

keyboard.keymap = [
    [KC.A, KC.B],
    [KC.C, KC.D],
]

if __name__ == '__main__':
    keyboard.go()

Mais Informação

Mais informação pode ser vista aqui