Add initial support (untested) for my layout on nyquist with converter board
Unbrick splits completely Unbrick splits completely
This commit is contained in:
parent
6f5f54390b
commit
e6acef9648
@ -69,6 +69,7 @@ class Firmware:
|
|||||||
is_master = None
|
is_master = None
|
||||||
uart = None
|
uart = None
|
||||||
uart_flip = True
|
uart_flip = True
|
||||||
|
uart_pin = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._state = InternalState(self)
|
self._state = InternalState(self)
|
||||||
@ -129,18 +130,16 @@ class Firmware:
|
|||||||
self.uart.write(message, '\n')
|
self.uart.write(message, '\n')
|
||||||
|
|
||||||
def _master_half(self):
|
def _master_half(self):
|
||||||
|
if self.is_master is not None:
|
||||||
|
return self.is_master
|
||||||
|
|
||||||
return supervisor.runtime.serial_connected
|
return supervisor.runtime.serial_connected
|
||||||
|
|
||||||
def init_uart(self, tx=None, rx=None, timeout=20):
|
def init_uart(self, pin, timeout=20):
|
||||||
if self._master_half():
|
if self._master_half():
|
||||||
# If running with one wire, only receive on master
|
return busio.UART(tx=None, rx=pin, timeout=timeout)
|
||||||
if rx is None or self.uart_flip:
|
|
||||||
return busio.UART(tx=rx, rx=None, timeout=timeout)
|
|
||||||
else:
|
|
||||||
return busio.UART(tx=tx, rx=rx, timeout=timeout)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return busio.UART(tx=tx, rx=rx, timeout=timeout)
|
return busio.UART(tx=pin, rx=None, timeout=timeout)
|
||||||
|
|
||||||
def go(self):
|
def go(self):
|
||||||
assert self.keymap, 'must define a keymap with at least one row'
|
assert self.keymap, 'must define a keymap with at least one row'
|
||||||
@ -148,15 +147,18 @@ class Firmware:
|
|||||||
assert self.col_pins, 'no GPIO pins defined for matrix columns'
|
assert self.col_pins, 'no GPIO pins defined for matrix columns'
|
||||||
assert self.diode_orientation is not None, 'diode orientation must be defined'
|
assert self.diode_orientation is not None, 'diode orientation must be defined'
|
||||||
|
|
||||||
self.is_master == self._master_half()
|
|
||||||
|
|
||||||
|
# Split keyboard Init
|
||||||
if self.split_flip and not self._master_half():
|
if self.split_flip and not self._master_half():
|
||||||
self.col_pins = list(reversed(self.col_pins))
|
self.col_pins = list(reversed(self.col_pins))
|
||||||
|
|
||||||
if self.split_side == "Left":
|
if self.split_side == "Left":
|
||||||
self.split_master_left = self.is_master
|
self.split_master_left = self._master_half()
|
||||||
elif self.split_side == "Right":
|
elif self.split_side == "Right":
|
||||||
self.split_master_left = not self.is_master
|
self.split_master_left = not self._master_half()
|
||||||
|
|
||||||
|
if self.uart_pin is not None:
|
||||||
|
self.uart = self.init_uart(self.uart_pin)
|
||||||
|
|
||||||
self.matrix = MatrixScanner(
|
self.matrix = MatrixScanner(
|
||||||
cols=self.col_pins,
|
cols=self.col_pins,
|
||||||
|
@ -12,15 +12,14 @@ from kmk.types import AttrDict
|
|||||||
|
|
||||||
keyboard = Firmware()
|
keyboard = Firmware()
|
||||||
|
|
||||||
keyboard.col_pins = (P.D10, P.D9, P.D7, P.D5, P.A4, P.A5)
|
keyboard.col_pins = (P.A2, P.A3, P.A4, P.A5, P.SCK, P.MOSI)
|
||||||
keyboard.row_pins = (P.A0, P.A1, P.A2, P.A3)
|
keyboard.row_pins = (P.D13, P.D11, P.D10, P.D9)
|
||||||
keyboard.diode_orientation = DiodeOrientation.COLUMNS
|
keyboard.diode_orientation = DiodeOrientation.COLUMNS
|
||||||
|
|
||||||
keyboard.split_type = "UART"
|
keyboard.split_type = "UART"
|
||||||
keyboard.split_flip = True
|
keyboard.split_flip = True
|
||||||
keyboard.split_offsets = [6, 6, 6, 6]
|
keyboard.split_offsets = [6, 6, 6, 6]
|
||||||
keyboard.uart_flip = False
|
keyboard.uart_pin = board.SCL
|
||||||
keyboard.uart = keyboard.init_uart(tx=board.TX, rx=board.RX)
|
|
||||||
|
|
||||||
# ------------------User level config variables ---------------------------------------
|
# ------------------User level config variables ---------------------------------------
|
||||||
keyboard.leader_mode = LeaderMode.TIMEOUT
|
keyboard.leader_mode = LeaderMode.TIMEOUT
|
||||||
@ -53,8 +52,6 @@ keyboard.leader_dictionary = {
|
|||||||
glds('yay'): emoticons.YAY,
|
glds('yay'): emoticons.YAY,
|
||||||
}
|
}
|
||||||
|
|
||||||
WPM = send_string("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Bibendum arcu vitae elementum curabitur vitae nunc sed. Facilisis sed odio morbi quis.")
|
|
||||||
|
|
||||||
# ---------------------- Keymap ---------------------------------------------------------
|
# ---------------------- Keymap ---------------------------------------------------------
|
||||||
|
|
||||||
keyboard.keymap = [
|
keyboard.keymap = [
|
||||||
@ -88,7 +85,7 @@ keyboard.keymap = [
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
# Raise3
|
# Raise3
|
||||||
[WPM, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F10, KC.F11, KC.F12, KC.LSHIFT(KC.INS)],
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F10, KC.F11, KC.F12, KC.LSHIFT(KC.INS)],
|
||||||
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F7, KC.F8, KC.F9, KC.NO],
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F7, KC.F8, KC.F9, KC.NO],
|
||||||
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F4, KC.F5, KC.F6, KC.NO],
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F4, KC.F5, KC.F6, KC.NO],
|
||||||
[KC.DF(0), KC.DF(1), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.NO],
|
[KC.DF(0), KC.DF(1), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.NO],
|
||||||
|
102
user_keymaps/kdb424/nyquist_converter.py
Normal file
102
user_keymaps/kdb424/nyquist_converter.py
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
import board
|
||||||
|
import busio
|
||||||
|
|
||||||
|
from kmk.consts import DiodeOrientation, LeaderMode, UnicodeMode
|
||||||
|
from kmk.keycodes import KC
|
||||||
|
from kmk.keycodes import generate_leader_dictionary_seq as glds
|
||||||
|
from kmk.macros.simple import send_string
|
||||||
|
from kmk.macros.unicode import compile_unicode_string_sequences
|
||||||
|
from kmk.mcus.circuitpython_samd51 import Firmware
|
||||||
|
from kmk.pins import Pin as P
|
||||||
|
from kmk.types import AttrDict
|
||||||
|
|
||||||
|
keyboard = Firmware()
|
||||||
|
|
||||||
|
keyboard.col_pins = (P.RX, P.A1, P.A2, P.A3, P.A4, P.A5)
|
||||||
|
keyboard.row_pins = (P.D13, P.D11, P.D10, P.D9, P.D5)
|
||||||
|
keyboard.diode_orientation = DiodeOrientation.COLUMNS
|
||||||
|
|
||||||
|
keyboard.split_type = "UART"
|
||||||
|
keyboard.split_flip = True
|
||||||
|
keyboard.split_offsets = [6, 6, 6, 6, 6]
|
||||||
|
keyboard.uart_flip = True
|
||||||
|
keyboard.uart = keyboard.init_uart(tx=board.SDA, rx=board.SCL)
|
||||||
|
|
||||||
|
# ------------------User level config variables ---------------------------------------
|
||||||
|
keyboard.leader_mode = LeaderMode.TIMEOUT
|
||||||
|
keyboard.unicode_mode = UnicodeModes.LINUX
|
||||||
|
keyboard.tap_time = 150
|
||||||
|
keyboard.leader_timeout = 2000
|
||||||
|
keyboard.debug_enabled = True
|
||||||
|
|
||||||
|
emoticons = compile_unicode_string_sequences({
|
||||||
|
# Emoticons, but fancier
|
||||||
|
'ANGRY_TABLE_FLIP': r'(ノಠ痊ಠ)ノ彡┻━┻',
|
||||||
|
'CHEER': r'+。:.゚ヽ(´∀。)ノ゚.:。+゚゚+。:.゚ヽ(*´∀)ノ゚.:。+゚',
|
||||||
|
'TABLE_FLIP': r'(╯°□°)╯︵ ┻━┻',
|
||||||
|
'WAT': r'⊙.☉',
|
||||||
|
'FF': r'凸(゚Д゚#)',
|
||||||
|
'F': r'( ̄^ ̄)凸',
|
||||||
|
'MEH': r'╮( ̄_ ̄)╭',
|
||||||
|
'YAY': r'o(^▽^)o',
|
||||||
|
})
|
||||||
|
|
||||||
|
# ---------------------- Leader Key Macros --------------------------------------------
|
||||||
|
|
||||||
|
keyboard.leader_dictionary = {
|
||||||
|
glds('flip'): emoticons.ANGRY_TABLE_FLIP,
|
||||||
|
glds('cheer'): emoticons.CHEER,
|
||||||
|
glds('wat'): emoticons.WAT,
|
||||||
|
glds('ff'): emoticons.FF,
|
||||||
|
glds('f'): emoticons.F,
|
||||||
|
glds('meh'): emoticons.MEH,
|
||||||
|
glds('yay'): emoticons.YAY,
|
||||||
|
}
|
||||||
|
LT3_SP = KC.LT(3, KC.SPC)
|
||||||
|
# ---------------------- Keymap ---------------------------------------------------------
|
||||||
|
|
||||||
|
keyboard.keymap = [
|
||||||
|
[
|
||||||
|
# Default
|
||||||
|
[KC.GESC, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.DEL],
|
||||||
|
[KC.GRV, KC.QUOTE, KC.COMMA, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, KC.BKSP],
|
||||||
|
[KC.TAB, KC.A, KC.O, KC.E, KC.U, KC.I, KC.D, KC.H, KC.T, KC.N, KC.S, KC.ENT],
|
||||||
|
[KC.LSFT, KC.SCLN, KC.Q, KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, KC.V, KC.Z, KC.SLSH],
|
||||||
|
[KC.LCTRL, KC.LGUI, KC.LALT, KC.LEAD, KC.MO(2), LT3_SP, LT3_SP, KC.MO(4), KC.LEFT, KC.DOWN, KC.UP, KC.RIGHT],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Gaming
|
||||||
|
[KC.GESC, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.DEL],
|
||||||
|
[KC.TAB, KC.QUOT, KC.COMM, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, KC.BKSP],
|
||||||
|
[KC.ESC, KC.A, KC.O, KC.E, KC.U, KC.I, KC.D, KC.H, KC.T, KC.N, KC.S, KC.ENT],
|
||||||
|
[KC.LSFT, KC.SCLN, KC.Q, KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, KC.V, KC.Z, KC.SLSH],
|
||||||
|
[KC.LCTRL, KC.LGUI, KC.LALT, KC.F1, KC.F2, KC.SPC, KC.SPC, KC.MO(4), KC.LEFT, KC.DOWN, KC.UP, KC.RIGHT],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Raise1
|
||||||
|
[KC.GESC, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.DEL],
|
||||||
|
[KC.TILD, KC.EXLM, KC.AT, KC.HASH, KC.DLR, KC.PERC, KC.CIRC, KC.AMPR, KC.ASTR, KC.LPRN, KC.RPRN, KC.DEL],
|
||||||
|
[KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.LBRC, KC.RBRC, KC.BSLS],
|
||||||
|
[KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.INS, KC.PGDN, KC.PGUP, KC.MINS],
|
||||||
|
[KC.RESET, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.NO, KC.NO, KC.EQL, KC.HOME, KC.VOLD, KC.VOLU, KC.END],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Raise2
|
||||||
|
[KC.GESC, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.DEL],
|
||||||
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.N7, KC.N8, KC.N9, KC.BKSP],
|
||||||
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.N4, KC.N5, KC.N6, KC.VOLU],
|
||||||
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.N1, KC.N2, KC.N3, KC.VOLD],
|
||||||
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.N0, KC.N0, KC.PDOT, KC.ENT],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Raise3
|
||||||
|
[KC.GESC, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.DEL],
|
||||||
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F10, KC.F11, KC.F12, KC.LSHIFT(KC.INS)],
|
||||||
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F7, KC.F8, KC.F9, KC.NO],
|
||||||
|
[KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F4, KC.F5, KC.F6, KC.NO],
|
||||||
|
[KC.DF(0), KC.DF(1), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.NO],
|
||||||
|
],
|
||||||
|
]
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
keyboard.go()
|
Loading…
Reference in New Issue
Block a user