Created
September 8, 2025 07:31
-
-
Save andywarburton/1eb65b0a55627690353722d9f37f890f to your computer and use it in GitHub Desktop.
Simple KMK split keyboard example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
print("Starting Hex Split")from kmk.kmk_keyboard import KMKKeyboard | |
from kmk.keys import KC | |
from kmk.scanners import DiodeOrientation | |
from kmk.modules.split import Split, SplitSide, SplitType | |
from kmk.extensions.media_keys import MediaKeys | |
from kmk.modules.holdtap import HoldTap | |
from kmk.modules.layers import Layers | |
from kmk.extensions.statusled import statusLED | |
from kmk.extensions.stringy_keymaps import StringyKeymaps | |
from kmk.modules.mouse_keys import MouseKeys | |
from kmk.modules.cg_swap import CgSwap | |
from kmk.modules.macros import Macros,Press, Release, Tap | |
from kmk.modules.tapdance import TapDance | |
from storage import getmount | |
import board | |
keyboard = KMKKeyboard() | |
side = SplitSide.RIGHT if str(getmount('/').label)[-1] == 'R' else SplitSide.LEFT | |
if side == SplitSide.LEFT: | |
print("======== LEFT SIDE ========") | |
split = Split( | |
split_flip=False, | |
split_side=SplitSide.LEFT, | |
split_type=SplitType.UART, | |
split_target_left=True, | |
uart_interval=10, | |
data_pin=board.GP1, | |
data_pin2=board.GP0, | |
uart_flip=False, | |
use_pio=False, | |
) | |
else: | |
print("======== MR RIGHT SIDE ========") | |
split = Split( | |
split_flip=False, | |
split_side=SplitSide.RIGHT, | |
split_type=SplitType.UART, | |
split_target_left=True, | |
uart_interval=10, | |
data_pin=board.GP1, | |
data_pin2=board.GP0, | |
uart_flip=False, | |
use_pio=False, | |
) | |
holdtap = HoldTap() | |
statusLED = statusLED( | |
led_pins=[board.GP27,board.GP26], | |
brightness=100, | |
brightness_step=5, | |
brightness_limit=100, | |
) | |
# cg_swap disabled on startup | |
cg_swap = CgSwap() | |
macros = Macros() | |
tapdance = TapDance() | |
keyboard.modules.append(tapdance) | |
keyboard.modules.append(Macros()) | |
keyboard.modules.append(macros) | |
keyboard.modules.append(cg_swap) | |
stringyKeymaps = StringyKeymaps() | |
keyboard.extensions.append(stringyKeymaps) | |
keyboard.extensions.append(statusLED) | |
keyboard.modules.append(split) | |
keyboard.extensions.append(MediaKeys()) | |
keyboard.modules.append(holdtap) | |
keyboard.modules.append(Layers()) | |
keyboard.row_pins = (board.GP15,board.GP14,board.GP13,board.GP12,board.GP11,) | |
keyboard.col_pins = (board.GP10,board.GP9,board.GP8,board.GP7,board.GP6,board.GP5,board.GP4) | |
keyboard.diode_orientation = DiodeOrientation.COL2ROW | |
keyboard.coord_mapping = [ | |
0, 1, 2, 3, 4, 5, 6, 35, 36, 37, 38, 39, 40, 41, | |
7, 8, 9, 10, 11, 12, 13, 42, 43, 44, 45, 46, 47, 48, | |
14, 15, 16, 17, 18, 19, 20, 49, 50, 51, 52, 53, 54, 55, | |
22, 23, 24, 25, 26, 27, 56, 57, 58, 59, 60, 61, | |
29, 30, 31, 32, 33, 64, 65, 66, 67, 68 | |
] | |
XXX = KC.NO | |
___ = KC.TRNS | |
RSFT = KC.HT(KC.ENT, KC.RSFT) | |
SPC = KC.HT(KC.SPACE, KC.MO(1), tap_time=800) | |
CTOG = KC.CG_TOGG | |
LAY1 = KC.MO(1) | |
LAY2 = KC.MO(2) | |
keyboard.keymap = [ | |
[ | |
'PSCREEN' , 'ESC' , 'N1' , 'N2' , 'N3' , 'N4' , 'N5' , 'N6' , 'N7' , 'N8' , 'N9' , 'N0' , 'BSPC' , 'VOLU', | |
___ , 'TAB' , 'Q' , 'W' , 'E' , 'R' , 'T' , 'Y' , 'U' , 'I' , 'O' , 'P' , 'MINS' , 'MUTE', | |
___ , 'LBRC' , 'A' , 'S' , 'D' , 'F' , 'G' , 'H' , 'J' , 'K' , 'L' , 'SCLN' , 'QUOT' , 'VOLD', | |
'LSFT' , 'Z' , 'X' , 'C' , 'V' , 'B' , 'N' , 'M' , 'COMM' , 'DOT' , 'SLSH' , RSFT , | |
'LCTL' , 'LALT' , 'LGUI' , 'LGUI' , SPC , SPC , 'LEFT' , 'DOWN' , 'RGHT' , 'UP' , | |
], | |
[ | |
___ , 'GRAVE' , 'F1' , 'F2' , 'F3' , 'F4' , 'F5' , 'F6' , 'F7' , 'F8' , 'F9' , 'F10' , 'EQL' , 'DEL', | |
___ , 'TILD' , ___ , 'UP' , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___, | |
___ , 'RBRC' , 'LEFT' , 'DOWN' , 'RIGHT' , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___, | |
___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ , 'LBRC' , 'RBRC' , 'BSLS' , ___ , | |
___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ , | |
], | |
] | |
if __name__ == '__main__': | |
keyboard.go() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment