print("MACROPAD STARTING")
import board
from kmk.kmk_keyboard import KMKKeyboard
from kmk.keys import KC
from kmk.scanners import DiodeOrientation
from kmk.modules.encoder import EncoderHandler
from kmk.extensions.media_keys import MediaKeys
from kmk.extensions.peg_oled_Display import (
Oled,
OledData,
OledDisplayMode,
OledReactionType,
)
from kmk.modules.mouse_keys import MouseKeys
from kmk.modules.layers import Layers
keyboard = KMKKeyboard()
# I2C pins for the mini OLED display
keyboard.SCL = board.GP7
keyboard.SDA = board.GP8
keyboard.SCL = board.GP9
keyboard.SDA = board.GP10
oled_ext = Oled(
OledData(
corner_one={0: OledReactionType.STATIC, 1: ['Macro Pad']},
corner_two={0:OledReactionType.LAYER,1:["1","2","3"]},
corner_three={0:OledReactionType.LAYER,1:["base","raise","lower","adjust"]},
corner_four={0:OledReactionType.LAYER,1:["qwerty","nums","shifted","leds"]}
),
oWidth=128,
oHeight=64,
toDisplay=OledDisplayMode.TXT,
flip=False,
)
keyboard.extensions.append(oled_ext)
# keyboard pins
keyboard.col_pins = (board.GP0,board.GP1, board.GP2)
keyboard.row_pins = (board.GP3, board.GP4, board.GP5, board.GP6) #GP6 - change layer switch
keyboard.diode_orientation = DiodeOrientation.ROW2COL
Encoder_handler = EncoderHandler()
keyboard.modules.append(Layers())
keyboard.modules.append(Encoder_handler)
keyboard.modules.append(MediaKeys())
keyboard.modules.append(MouseKeys())
Encoder_handler.pins = ((board.GP16, board.GP17, board.GP18),(board.GP19, board.GP20, board.GP21),)
TRANS = KC.TRNS
#RAISE = KC.MO(1)
# RAISE = KC.DF(1)
# BASE = KC.DF(0)
# RAISE = KC.LT(1, KC.A)
# Layers
BASE, PHOTOSHOP, VsCode = 0, 1, 2
TO_BSE= KC.DF(BASE)
TO_PS = KC.DF(PHOTOSHOP)
TO_VsC = KC.DF(VsCode)
keyboard.keymap = [
[#LAYER 0: BASE
KC.MPLY, KC.LSHIFT, KC.TAB,
KC.N7, KC.N8, KC.N9, TO_PS
],
[#LAYER 1: PHOTOSHOP
KC.A, KC.LSHIFT, KC.TAB,
KC.N7, KC.N8, KC.N9, TO_VsC
],
[#LAYER 2: VsCode
KC.A, KC.LSHIFT, KC.TAB,
KC.N7, KC.N8, KC.N9, TO_BSE
],
]
Zoom_in = KC.LCTRL(KC.EQUAL)
Zoom_out = KC.LCTRL(KC.MINUS)
Encoder_handler.map = [
(#LAYER 0: BASE
( KC.VOLD, KC.VOLU, KC.MUTE), #encoder1
(Zoom_out, Zoom_in, KC.NO) #encoder2
),
(#LAYER 1: PHOTOSHOP
( KC.VOLD, KC.VOLU, KC.MUTE), #encoder1
(Zoom_out, Zoom_in, KC.NO) #encoder2
),
(#LAYER 2: VsCode
( KC.VOLD, KC.VOLU, KC.MUTE), #encoder1
(Zoom_out, Zoom_in, KC.NO) #encoder2
)
]
if __name__ == '__main__':
keyboard.go()