keyboard.rgb_config['val_default'] = 0 keyboard.rgb_config['knight_effect_length'] = 6 keyboard.rgb_config['animation_mode'] = 'static' keyboard.rgb_config['animation_speed'] = 2 keyboard.debug_enabled = False # ---------------------- Custom Functions -------------------------------------------- BASE = 0 GAMING = 1 FN1 = 2 _______ = KC.TRNS XXXXXXX = KC.NO HOME = KC.MT(KC.HOME, KC.LSFT) END = KC.MT(KC.END, KC.RSFT) LEFT_LAY = KC.LT(FN1, KC.LEFT) SHFT_INS = KC.LSFT(KC.INS) # ---------------------- Keymap --------------------------------------------------------- keyboard.keymap = [ # df [ KC.GESC, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.LBRC, KC.RBRC, KC.BSPC, KC.LEAD, KC.QUOT, KC.COMM, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, KC.SLSH, KC.EQL, KC.BSLS, KC.TAB, KC.A, KC.O, KC.E, KC.U, KC.I, KC.D, KC.H, KC.T, KC.N, KC.S, KC.MINS, KC.ENT, HOME, KC.SCLN, KC.Q, KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, KC.V, KC.Z, END,
# Designed for PB Gherkin (version without LEDs and where switches can be mounted in 4 # different orientations modtap = ModTap() layers_ext = Layers() keyboard.modules = [layers_ext, modtap] # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO FN1_SPC = KC.LT(1, KC.SPC) FN2_BSPC = KC.LT(2, KC.BSPC) FN3_C = KC.LT(3, KC.C) FN4_V = KC.LT(4, KC.V) CTL_Z = KC.MT(KC.Z, KC.LCTL) ALT_X = KC.MT(KC.X, KC.LALT) ALT_N = KC.MT(KC.N, KC.LALT) CTL_M = KC.MT(KC.M, KC.LCTL) SFT_ENT = KC.LSFT(KC.ENT) keyboard.keymap = [ [ KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.ESC, CTL_Z, ALT_X, FN3_C, FN4_V, FN2_BSPC, FN1_SPC, KC.B, ALT_N, CTL_M, SFT_ENT ], [ KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.F1, KC.F2, KC.F3, KC.F4, KC.F5, KC.F6, KC.F7, KC.F8, KC.F9, KC.F10,
def test_basic_kmk_keyboard(self): keyboard = KeyboardTest( [Layers(), ModTap(), OneShot()], [ [ KC.MT(KC.A, KC.LCTL), KC.LT(1, KC.B), KC.C, KC.D, KC.OS(KC.E) ], [KC.N1, KC.N2, KC.N3, KC.N4, KC.N5], ], debug_enabled=False, ) keyboard.test('MT tap behaviour', [(0, True), 100, (0, False)], [{KC.A}, {}]) keyboard.test('MT hold behaviour', [(0, True), 350, (0, False)], [{KC.LCTL}, {}]) # TODO test multiple mods being held # MT keyboard.test( 'MT within tap time sequential -> tap behavior', [(0, True), 100, (0, False), (3, True), (3, False)], [{KC.A}, {}, {KC.D}, {}], ) keyboard.test( 'MT within tap time rolling -> hold behavior', [(0, True), 100, (3, True), 250, (0, False), (3, False)], [{KC.LCTL}, {KC.LCTL, KC.D}, {KC.D}, {}], ) keyboard.test( 'MT within tap time nested -> hold behavior', [(0, True), 100, (3, True), (3, False), 250, (0, False)], [{KC.LCTL}, {KC.LCTL, KC.D}, {KC.LCTL}, {}], ) keyboard.test( 'MT after tap time sequential -> hold behavior', [(0, True), 350, (0, False), (3, True), (3, False)], [{KC.LCTL}, {}, {KC.D}, {}], ) keyboard.test( 'MT after tap time rolling -> hold behavior', [(0, True), 350, (3, True), (0, False), (3, False)], [{KC.LCTL}, {KC.LCTL, KC.D}, {KC.D}, {}], ) keyboard.test( 'MT after tap time nested -> hold behavior', [(0, True), 350, (3, True), (3, False), (0, False)], [{KC.LCTL}, {KC.LCTL, KC.D}, {KC.LCTL}, {}], ) # LT keyboard.test( 'LT within tap time sequential -> tap behavior', [(1, True), 100, (1, False), (3, True), (3, False)], [{KC.B}, {}, {KC.D}, {}], ) keyboard.test( 'LT within tap time rolling -> tap behavior', [(1, True), 100, (3, True), 250, (1, False), (3, False)], [{KC.B}, {KC.B, KC.D}, {KC.D}, {}], ) keyboard.test( 'LT within tap time nested -> tap behavior', [(1, True), 100, (3, True), (3, False), 250, (1, False)], [{KC.B}, {KC.B, KC.D}, {KC.B}, {}], ) keyboard.test( 'LT after tap time sequential -> hold behavior', [(1, True), 350, (1, False), (3, True), (3, False)], [{KC.D}, {}], ) keyboard.test( 'LT after tap time rolling -> hold behavior', [(1, True), 350, (3, True), (1, False), (3, False)], [{KC.N4}, {}], ) keyboard.test( 'LT after tap time nested -> hold behavior', [(1, True), 350, (3, True), (3, False), (1, False)], [{KC.N4}, {}], ) # TODO test TT # OS keyboard.test( 'OS timed out', [(4, True), (4, False), 1050], [{KC.E}, {}], ) keyboard.test( 'OS interrupt within tap time', [(4, True), (4, False), 100, (3, True), (3, False)], [{KC.E}, {KC.D, KC.E}, {}], ) keyboard.test( 'OS hold with multiple interrupt keys', [(4, True), 100, (3, True), (3, False), (2, True), (2, False), (4, False)], [{KC.E}, {KC.D, KC.E}, {KC.E}, {KC.C, KC.E}, {KC.E}, {}], )
KC.K, KC.L, KC.SCLN, KC.QUOT, KC.LSFT, KC.Z, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, KC.MT(KC.BSLS, KC.LSFT), KC.LCTRL, KC.LGUI, KC.LALT, LOWER, KC.ENT, KC.SPC, KC.SPC, UP_HYP, KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, ], [ # Dvorak
KC.Y, KC.U, KC.I, KC.O, KC.P, KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.ESC, KC.MT(KC.Z, KC.LCTRL), KC.MT(KC.X, KC.LALT), KC.LT(3, KC.C), KC.LT(4, KC.V), KC.LT(2, KC.BSPC), KC.LT(1, KC.SPC), KC.LT(5, KC.B), KC.MT(KC.N, KC.RALT), KC.MT(KC.M, KC.RCTRL), KC.MT(KC.ENT, KC.RSFT), ], [ KC.N1, KC.N2, KC.N3, KC.N4,
# Uncomment below if you're using encoder encoder_handler = EncoderHandler() encoder_handler.pins = ((keyboard.encoder_pin_0, keyboard.encoder_pin_1, None, False), ) # Uncomment below if you're having RGB rgb_ext = RGB( pixel_pin=keyboard.rgb_pixel_pin, num_pixels=10, animation_mode=AnimationModes.BREATHING_RAINBOW, ) keyboard.extensions.append(rgb_ext) # Edit your layout below # Currently, that's a default QMK Kyria Layout - https://config.qmk.fm/#/splitkb/kyria/rev1/LAYOUT ESC_LCTL = KC.MT(KC.ESC, KC.LCTL) QUOTE_RCTL = KC.MT(KC.QUOTE, KC.RCTL) ENT_LALT = KC.MT(KC.ENT, KC.LALT) MINUS_RCTL = KC.MT(KC.MINUS, KC.RCTL) keyboard.keymap = [ [ KC.TAB, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O,
if split_side == SplitSide.LEFT: buzzer = pwmio.PWMOut(board.GP8, variable_frequency=True) OFF = 0 ON = 2**15 buzzer.duty_cycle = ON buzzer.frequency = 2000 time.sleep(0.2) buzzer.frequency = 1000 time.sleep(0.2) buzzer.duty_cycle = OFF LOWER = KC.MO(1) RAISE = KC.MO(2) ADJUST = KC.MO(3) CT_TAB = KC.MT(KC.TAB, KC.LCTRL) CT_QUOT = KC.MT(KC.QUOT, KC.LCTRL) SF_MINS = KC.MT(KC.MINS, KC.LSHIFT) SG_PSCR = KC.LSFT(KC.LGUI(KC.PSCR)) SF_PSCR = KC.LSFT(KC.PSCR) CG_RGHT = KC.LCTRL(KC.LGUI(KC.RGHT)) RESET = KC.RESET LANG1 = KC.LANG1 LANG2 = KC.LANG2 keyboard.keymap = [ [ # QWERTY # ------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+ KC.GESC, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPC,\ # ------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, val_limit=100, hue_default=190, sat_default=100, val_default=5) modtap = ModTap() layers_ext = Layers() keyboard.modules = [layers_ext, modtap] keyboard.extensions = [rgb] # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO LOWER = KC.MO(1) RAISE = KC.MO(2) ADJUST = KC.LT(3, KC.SPC) RSFT_ENT = KC.MT(KC.ENT, KC.RSFT) RSFT_SPC = KC.MT(KC.SPC, KC.RSFT) RGB_TOG = KC.RGB_TOG RGB_HUI = KC.RGB_HUI RGB_HUD = KC.RGB_HUI RGB_SAI = KC.RGB_SAI RGB_SAD = KC.RGB_SAD RGB_VAI = KC.RGB_VAI RGB_VAD = KC.RGB_VAD keyboard.keymap = [ [ #QWERTY KC.TAB, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPC, KC.LCTL, KC.A, KC.S, KC.D, KC.F, KC.G, 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.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, RSFT_ENT,
keyboard.debug_enabled = False LOWER = KC.TT(3) UP_HYP = KC.LT(4, KC.MINS) _______ = KC.TRNS XXXXXXX = KC.NO # ---------------------- Keymap --------------------------------------------------------- keyboard.keymap = [ [ # Default KC.GESC, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPC, KC.TAB, KC.A, KC.S, KC.D, KC.F, KC.G, 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.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, KC.MT(KC.BSLS, KC.LSFT), KC.LCTRL, KC.LGUI, KC.LALT, LOWER, KC.ENT, KC.SPC, KC.SPC, UP_HYP, KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, ], [ # Dvorak KC.GESC, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPC, KC.TAB, KC.A, KC.S, KC.D, KC.F, KC.G, 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.B, KC.M, KC.COMM, KC.DOT, KC.SLSH, KC.ENT, KC.LCTRL, KC.F9, KC.LALT, KC.F6, KC.SPC, KC.F7, KC.SPC, UP_HYP, KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, ], [ # Gaming KC.GESC, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPC, KC.TAB, KC.A, KC.S, KC.D, KC.F, KC.G, 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.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, KC.ENT,