Initial port of zodiark with quickpin

This commit is contained in:
Kyle Brown 2022-10-04 14:22:09 -07:00 committed by xs5871
parent af3febc469
commit 75f535c977
3 changed files with 792 additions and 0 deletions

15
boards/zodiark/README.md Normal file
View File

@ -0,0 +1,15 @@
# Zodiark
![Zodiark](https://camo.githubusercontent.com/b5283aea8fe39b0646a405fd358aa0c2c0f5896fc0fb80a92b5e761149759214/68747470733a2f2f692e696d6775722e636f6d2f34394f38616f776c2e6a7067)
A split keyboard with 5x7 including a thumbcluster, encoders on each side, per
key RGB, and 2x I2C headers per side, supporting 1.3"/.96" 128x64 OLEDs (the
1.3" is an SSH1106 OLED, .91" 128x32 OLEDs.
Hardware Availability: Pending Group Buy - [Discord Link](https://discord.gg/BCSbXwskVt)
Extensions enabled by default
- [Split](/docs/split.md) Connects halves using a wire.
- [Layers](/docs/layers.md) Need more keys than switches? Use layers.
- [PEG_RGB](/docs/peg_rgb_matrix.md) Light it up!
- [PEG_OLED](/docs/peg_oled_display.md) Screens to see things on of course.

68
boards/zodiark/kb.py Normal file
View File

@ -0,0 +1,68 @@
import board
from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard
from kmk.scanners import DiodeOrientation
from kmk.scanners.keypad import MatrixScanner
from kmk.quickpin.pro_micro.boardsource_blok import pinout as pins
from kmk.quickpin.pro_Micro.avr_promicro import avr
class KMKKeyboard(_KMKKeyboard):
def __init__(self):
# create and register the scanner
self.matrix = [
MatrixScanner(
# required arguments:
column_pins=self.col_pins,
row_pins=self.row_pins,
# optional arguments with defaults:
columns_to_anodes=DiodeOrientation.COL2ROW,
interval=0.02,
max_events=64,
),
]
col_pins = (
pins[avr['F5']],
pins[avr['F6']],
pins[avr['F7']],
pins[avr['B1']],
pins[avr['B3']],
pins[avr['B2']],
pins[avr['B6']],
)
row_pins = (
pins[avr['C6']],
pins[avr['D7']],
pins[avr['E6']],
pins[avr['B4']],
pins[avr['F4']],
)
diode_orientation = DiodeOrientation.COLUMNS
rgb_pixel_pin = pins[avr['B5']]
data_pin = pins[avr['D3']]
i2c = board.I2C
SCL = board.SCL
SDA = board.SDA
# NOQA
# flake8: noqa
# fmt: off
led_key_pos =[
5, 4, 3, 2, 01, 00, 34, 35, 36, 37, 38, 39,
6, 7, 8, 9, 10, 11, 12, 46, 45, 44, 43, 42, 41, 40,
19, 18, 17, 16, 15, 14, 13, 47, 48, 49, 50, 51, 52, 53,
20, 21, 22, 23, 24, 25, 26, 60, 59, 58, 57, 56, 55, 54,
33, 32, 31, 30, 29, 28, 27, 61, 62, 63, 64, 65, 66, 67
]
brightness_limit = 0.5
num_pixels = 62
# NOQA
# flake8: noqa
coord_mapping = [
0, 1, 2, 3, 4, 5, 40, 39, 38, 37, 36, 35,
7, 8, 9, 10, 11, 12, 06, 41, 47, 46, 45, 44, 43, 42,
14, 15, 16, 17, 18, 19, 13, 48, 54, 53, 52, 51, 50, 49,
21, 22, 23, 24, 25, 26, 20, 27, 62, 55, 61, 60, 59, 58, 57, 56,
28, 29, 30, 31, 32, 33, 34, 69, 68, 67, 66, 65, 64, 63
]

709
boards/zodiark/main.py Normal file
View File

@ -0,0 +1,709 @@
import supervisor
from kb import KMKKeyboard
from kmk.extensions.peg_oled_Display import (
Oled,
OledData,
OledDisplayMode,
OledReactionType,
)
from kmk.extensions.peg_rgb_matrix import Rgb_matrix
from kmk.handlers.sequences import send_string
from kmk.hid import HIDModes
from kmk.keys import KC
from kmk.modules.layers import Layers
from kmk.modules.modtap import ModTap
from kmk.modules.split import Split, SplitSide, SplitType
keyboard = KMKKeyboard()
modtap = ModTap()
layers_ext = Layers()
keyboard.modules.append(layers_ext)
keyboard.modules.append(modtap)
oled_ext = Oled(
OledData(
corner_one={0: OledReactionType.STATIC, 1: ['qwertyzzzz']},
corner_two={
0: OledReactionType.LAYER,
1: ['1', '2', '3', '4', '5', '6', '7', '8'],
},
corner_three={
0: OledReactionType.LAYER,
1: ['base', 'raise', 'lower', 'adjust', '5', '6', '7', '8'],
},
corner_four={
0: OledReactionType.LAYER,
1: ['qwertyzzz', 'nums', 'shifted', 'leds', '5', '6', '7', '8'],
},
),
toDisplay=OledDisplayMode.TXT,
flip=False,
)
keyboard.extensions.append(oled_ext)
# Default RGB matrix colours
rgb_ext = Rgb_matrix(
ledDisplay=[
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
[80, 0, 80],
],
split=True,
rightSide=False,
disable_auto_write=True,
)
keyboard.extensions.append(rgb_ext)
# TODO Comment one of these on each side
split_side = SplitSide.LEFT
# split_side = SplitSide.RIGHT
split = Split(data_pin=keyboard.data_pin)
keyboard.modules.append(split)
keyboard.keymap = [
[
KC.F1,
KC.F2,
KC.F3,
KC.F4,
KC.F5,
KC.F6,
KC.F7,
KC.F8,
KC.F9,
KC.F10,
KC.F11,
KC.F12,
KC.ESC,
KC.N1,
KC.N2,
KC.N3,
KC.N4,
KC.N5,
KC.N6,
KC.N7,
KC.N8,
KC.N9,
KC.N0,
KC.GRV,
KC.TAB,
KC.Q,
KC.W,
KC.E,
KC.R,
KC.T,
KC.NO,
KC.NO,
KC.Y,
KC.U,
KC.I,
KC.O,
KC.P,
KC.MINS,
KC.LCTL,
KC.A,
KC.S,
KC.D,
KC.F,
KC.G,
KC.NO,
KC.NO,
KC.H,
KC.J,
KC.K,
KC.L,
KC.SCLN,
KC.QUOT,
KC.LSFT,
KC.Z,
KC.X,
KC.C,
KC.V,
KC.B,
KC.LBRC,
KC.RBRC,
KC.N,
KC.M,
KC.COMMA,
KC.DOT,
KC.SLSH,
KC.RSFT,
KC.NO,
KC.NO,
KC.NO,
KC.LGUI,
KC.MO(1),
KC.LCTL,
KC.SPC,
KC.ENT,
KC.MO(2),
KC.BSPC,
KC.RGUI,
KC.NO,
KC.NO,
KC.NO,
],
[
KC.F1,
KC.F2,
KC.F3,
KC.F4,
KC.F5,
KC.F6,
KC.F7,
KC.F8,
KC.F9,
KC.F10,
KC.F11,
KC.F12,
KC.TRNS,
KC.TRNS,
KC.UP,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.EQL,
KC.TRNS,
KC.TRNS,
KC.LEFT,
KC.DOWN,
KC.RGHT,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.LEFT,
KC.DOWN,
KC.RGHT,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.DEL,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
],
[
KC.N2,
KC.EXLM,
KC.AT,
KC.HASH,
KC.DLR,
KC.PERC,
KC.CIRC,
KC.AMPR,
KC.ASTR,
KC.LPRN,
KC.RPRN,
KC.TILD,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.PLUS,
KC.UNDS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.LCBR,
KC.RCBR,
KC.TRNS,
KC.TRNS,
KC.LABK,
KC.RABK,
KC.QUES,
KC.TRNS,
],
[
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
],
[
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
],
[
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
],
[
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
],
[
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
KC.TRNS,
],
]
if __name__ == '__main__':
keyboard.go(hid_type=HIDModes.USB)