Skip to content

Instantly share code, notes, and snippets.

@tommythorn
Created February 2, 2026 17:53
Show Gist options
  • Select an option

  • Save tommythorn/f5c98dd148aa9ba9c939661a7b988995 to your computer and use it in GitHub Desktop.

Select an option

Save tommythorn/f5c98dd148aa9ba9c939661a7b988995 to your computer and use it in GitHub Desktop.
#from storage import getmount
from kmk.keys import KC
from kmk.kmk_keyboard import KMKKeyboard
from kmk.modules.split import Split, SplitType, SplitSide
from kmk.scanners import DiodeOrientation
from kmk.hid import HIDModes
from kmk.modules.holdtap import HoldTap
import board
keyboard = KMKKeyboard()
keyboard.col_pins = (board.A5, board.A4, board.A3, board.A2, board.A1, board.A0, ) # Button side
keyboard.row_pins = (board.D13, board.D12, board.D11, board.D10, board.D9, board.D6) # Battery side
keyboard.diode_orientation = DiodeOrientation.COL2ROW
keyboard.data_pin = None
from kmk.modules.layers import Layers
keyboard.modules.append(Layers())
holdtap = HoldTap()
# optional: set a custom tap timeout in ms
# holdtap.tap_time = 300
keyboard.modules.append(holdtap)
DELETE_FN = KC.HT(KC.DELETE, KC.MO(2))
DVORAK = KC.DF(0)
QWERTY = KC.DF(1)
keyboard.keymap = [[
KC.EQUAL, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.MINUS,
KC.TAB, KC.QUOTE, KC.COMMA, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, KC.SLASH,
KC.CAPSLOCK, KC.A, KC.O, KC.E, KC.U, KC.I, KC.D, KC.H, KC.T, KC.N, KC.S, KC.BSLASH,
KC.LSHIFT, KC.SCOLON, KC.Q, KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, KC.V, KC.Z, KC.RSHIFT,
KC.NO, KC.GRAVE, KC.ESC, KC.LEFT, KC.RIGHT, KC.NO, KC.NO, KC.UP, KC.DOWN, KC.LBRACKET, KC.RBRACKET, KC.NO,
KC.LALT, KC.END, KC.BSPACE,KC.HOME, KC.LCTRL, DELETE_FN, KC.RCTRL,KC.RCMD,KC.PGUP, KC.SPACE, KC.PGDOWN, KC.ENTER,
],[
KC.EQUAL, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.MINUS,
KC.TAB, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSLASH,
KC.CAPSLOCK, KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.SCOLON, KC.QUOTE,
KC.LSHIFT, KC.Z, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMMA,KC.DOT, KC.SLASH, KC.RSHIFT,
KC.NO, KC.GRAVE, KC.ESC, KC.LEFT, KC.RIGHT, KC.NO, KC.NO, KC.UP, KC.DOWN, KC.LBRACKET, KC.RBRACKET, KC.NO,
KC.LALT, KC.END, KC.BSPACE,KC.HOME, KC.LCTRL, DELETE_FN, KC.RCTRL,KC.RCMD,KC.PGUP, KC.SPACE, KC.PGDOWN, KC.ENTER,
],[
KC.F12, KC.F1, KC.F2, KC.F3, KC.F4, KC.F5, KC.F6, KC.F7, KC.F8, KC.F9, KC.F10, KC.F11,
KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
KC.TRNS, QWERTY, DVORAK, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, DELETE_FN, KC.TRNS,KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS,
]]
split = Split(
split_type=SplitType.BLE,
split_side=None,
data_pin=None,
split_flip=True,
# use_pio = True,
# uart_flip = True
# data_pin2=,
)
keyboard.modules.append(split)
# keyboard.debug_enabled = False
if __name__ == '__main__':
# print("Keyboard ",getmount("/").label)
keyboard.go(hid_type=HIDModes.BLE, ble_name='Mystery Keyboard')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment