422 lines
6.9 KiB
Python
422 lines
6.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()
|