def send_string(message): seq = [] for char in message: kc = KC[char] if char.isupper(): kc = KC.LSHIFT(kc) seq.append(kc) return simple_key_sequence(seq) IBUS_KEY_COMBO = simple_key_sequence((KC.LCTRL(KC.LSHIFT(KC.U)),)) RALT_KEY = simple_key_sequence((KC.RALT,)) U_KEY = simple_key_sequence((KC.U,)) ENTER_KEY = simple_key_sequence((KC.ENTER,)) RALT_DOWN_NO_RELEASE = simple_key_sequence((KC.RALT(no_release=True),)) RALT_UP_NO_PRESS = simple_key_sequence((KC.RALT(no_press=True),)) def compile_unicode_string_sequences(string_table): for k, v in string_table.items(): string_table[k] = unicode_string_sequence(v) return AttrDict(string_table) def unicode_string_sequence(unistring):
import board from kb import KMKKeyboard from kmk.handlers.sequences import send_string, simple_key_sequence from kmk.keys import KC from kmk.modules.encoder import EncoderHandler from kmk.modules.layers import Layers # local_increment = None # local_decrement = None keyboard = KMKKeyboard() # custom keys used for encoder actions Zoom_in = KC.LCTRL(KC.EQUAL) Zoom_out = KC.LCTRL(KC.MINUS) # standard filler keys _______ = KC.TRNS XXXXXXX = KC.NO # for use in the encoder extension encoder_map = [ [ ( KC.VOLU, KC.VOLD, 2, ), # Only 1 encoder is being used, so only one tuple per layer is required ],
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,\ # ------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+ CT_TAB, KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.SCLN, CT_QUOT,\ # ------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+ KC.LSFT, KC.Z, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, SF_MINS,\ # ------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+