224 lines
5.9 KiB
Python
224 lines
5.9 KiB
Python
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
|
|
|
|
|
|
layers_ext = Layers()
|
|
|
|
# 1 encoder, no button, inversed = True
|
|
encoder_ext = EncoderHandler(
|
|
(board.D40, board.D41, None, True),
|
|
)
|
|
keyboard.modules = [layers_ext, encoder_ext]
|
|
|
|
keyboard.tap_time = 250
|
|
keyboard.debug_enabled = False
|
|
|
|
|
|
# custom keys
|
|
NEW = KC.LCTL(KC.N)
|
|
NEW_DIR = KC.LCTL(KC.LSFT(KC.N))
|
|
CAD = KC.LCTL(KC.LALT(KC.DEL))
|
|
RES = KC.LCTL(KC.LSFT(KC.ESC))
|
|
FE = KC.LGUI(KC.E)
|
|
LT1_DEL = KC.LT(1, KC.DEL)
|
|
LT2_ENT = KC.LT(2, KC.ENT)
|
|
SAVE_AS = KC.LCTL(KC.LSFT(KC.S))
|
|
PSCR = KC.LGUI(KC.PSCR)
|
|
SNIP = simple_key_sequence(
|
|
(
|
|
KC.LGUI,
|
|
KC.MACRO_SLEEP_MS(25),
|
|
KC.S,
|
|
KC.N,
|
|
KC.I,
|
|
KC.P,
|
|
KC.MACRO_SLEEP_MS(25),
|
|
KC.ENT,
|
|
)
|
|
)
|
|
|
|
# programming layer keys
|
|
UINT = simple_key_sequence(
|
|
(
|
|
KC.U,
|
|
KC.I,
|
|
KC.N,
|
|
KC.T,
|
|
)
|
|
)
|
|
INT = simple_key_sequence(
|
|
(
|
|
KC.I,
|
|
KC.N,
|
|
KC.T,
|
|
)
|
|
)
|
|
DOUBLE = simple_key_sequence(
|
|
(
|
|
KC.D,
|
|
KC.O,
|
|
KC.U,
|
|
KC.B,
|
|
KC.L,
|
|
KC.E,
|
|
)
|
|
)
|
|
BOOL = simple_key_sequence(
|
|
(
|
|
KC.B,
|
|
KC.O,
|
|
KC.O,
|
|
KC.L,
|
|
)
|
|
)
|
|
BYTE = simple_key_sequence(
|
|
(
|
|
KC.B,
|
|
KC.Y,
|
|
KC.T,
|
|
KC.E,
|
|
)
|
|
)
|
|
SBYTE = simple_key_sequence(
|
|
(
|
|
KC.S,
|
|
KC.B,
|
|
KC.Y,
|
|
KC.T,
|
|
KC.E,
|
|
)
|
|
)
|
|
CHAR = simple_key_sequence(
|
|
(
|
|
KC.C,
|
|
KC.H,
|
|
KC.A,
|
|
KC.R,
|
|
)
|
|
)
|
|
GETSET = simple_key_sequence(
|
|
(
|
|
KC.LBRC,
|
|
KC.SPC,
|
|
KC.G,
|
|
KC.E,
|
|
KC.T,
|
|
KC.SCLN,
|
|
KC.SPC,
|
|
KC.S,
|
|
KC.E,
|
|
KC.T,
|
|
KC.SCLN,
|
|
KC.SPC,
|
|
KC.RBRC,
|
|
)
|
|
)
|
|
PUBLIC = simple_key_sequence(
|
|
(
|
|
KC.P,
|
|
KC.U,
|
|
KC.B,
|
|
KC.L,
|
|
KC.I,
|
|
KC.C,
|
|
)
|
|
)
|
|
DEBUGWL = simple_key_sequence(
|
|
(
|
|
KC.LSFT(KC.D),
|
|
KC.E,
|
|
KC.B,
|
|
KC.U,
|
|
KC.G,
|
|
KC.DOT,
|
|
KC.LSFT(KC.W),
|
|
KC.R,
|
|
KC.I,
|
|
KC.T,
|
|
KC.E,
|
|
KC.LSFT(KC.L),
|
|
KC.I,
|
|
KC.N,
|
|
KC.E,
|
|
KC.LSFT(KC.N9),
|
|
)
|
|
)
|
|
PRINT = simple_key_sequence(
|
|
(
|
|
KC.P,
|
|
KC.R,
|
|
KC.I,
|
|
KC.N,
|
|
KC.T,
|
|
)
|
|
)
|
|
|
|
|
|
# make keymap
|
|
keyboard.keymap = [
|
|
[ # qwerty
|
|
KC.ESC, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.MINS,
|
|
KC.CAPS, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.PSLS,
|
|
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.TRNS, KC.Z, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, FE,
|
|
KC.BSPC, KC.DEL, KC.LALT, KC.LSFT, KC.LCTL, KC.BSPC, KC.SPC, KC.ENT, KC.RSFT, KC.RCTL, KC.ENT, KC.RGUI,
|
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.MO(1), KC.MO(2), KC.MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
],
|
|
[ # navnum
|
|
KC.TRNS, SAVE_AS, PSCR, SNIP, KC.LGUI, NEW_DIR, KC.PSLS, KC.RGUI, KC.NO, KC.NO, KC.NO, KC.MINS,
|
|
KC.BSLS, KC.NO, KC.HOME, KC.UP, KC.END, NEW, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.BSLS,
|
|
KC.F2, KC.NO, KC.LEFT, KC.DOWN, KC.RGHT, KC.HASH, KC.N0, KC.N1, KC.N2, KC.N3, KC.N4, KC.QUOT,
|
|
KC.LSFT, KC.NO, KC.NO, KC.NO, KC.TAB, KC.UNDS, KC.MINS, KC.PPLS, KC.MINS, KC.PAST, KC.PSLS, KC.LBRC,
|
|
KC.BSPC, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, KC.SPC, KC.EQL, KC.N0, KC.DOT, KC.ENT, KC.RGUI,
|
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.TRNS, KC.TRNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
],
|
|
[ # sym/prog
|
|
KC.TRNS, KC.NO, KC.NO, KC.NO, KC.F2, KC.AMPR, PRINT, DEBUGWL, SAVE_AS, KC.NO, KC.NO, KC.NO,
|
|
KC.BSLS, KC.NO, KC.NO, KC.LCBR, KC.RCBR, KC.AT, INT, GETSET, KC.UP, KC.NO, KC.NO, KC.NO,
|
|
KC.TAB, KC.NO, KC.NO, KC.LPRN, KC.RPRN, KC.DLR, BOOL, KC.LEFT, KC.DOWN, KC.RGHT, KC.NO, KC.NO,
|
|
KC.LSFT, KC.NO, KC.NO, KC.LBRC, KC.RBRC, KC.PERC, UINT, DOUBLE, KC.NO, KC.NO, KC.NO, KC.NO,
|
|
KC.BSPC, KC.LGUI, KC.LALT, KC.LSFT, KC.LCTL, KC.DEL, KC.TRNS, PUBLIC, KC.RCTL, KC.RALT, KC.ENT, KC.RESET,
|
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.TRNS, KC.TRNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
],
|
|
]
|
|
|
|
|
|
# for use in the encoder extension
|
|
encoder_map = [
|
|
[
|
|
(
|
|
KC.VOLU,
|
|
KC.VOLD,
|
|
None,
|
|
), # Only 1 encoder is being used, so only one tuple per layer is required
|
|
],
|
|
[
|
|
(Zoom_in, Zoom_out, None),
|
|
],
|
|
[
|
|
(_______, _______, None), # no action taken by the encoder on this layer
|
|
],
|
|
]
|
|
|
|
if __name__ == '__main__':
|
|
keyboard.go()
|