86 lines
2.3 KiB
Python
86 lines
2.3 KiB
Python
print("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.modules.oled2 import Oled
|
|
from kmk.extensions.lock_status import LockStatus
|
|
from kmk.extensions.RGB import RGB
|
|
from kmk.extensions.rgb import AnimationModes
|
|
from kmk.modules.power import Power
|
|
from kmk.modules.layers import Layers
|
|
|
|
## Create KMK Keyboard object
|
|
keyboard = KMKKeyboard()
|
|
##
|
|
|
|
## Add layer support
|
|
keyboard.modules.append(Layers())
|
|
##
|
|
|
|
## Add status indicator support
|
|
locks = LockStatus()
|
|
keyboard.extensions.append(locks)
|
|
##
|
|
|
|
|
|
## RGB extension config
|
|
rgb_ext = RGB(pixel_pin=board.A3, num_pixels=9,
|
|
hue_default=249, refresh_rate=60,
|
|
animation_speed=1, breathe_center=1,
|
|
knight_effect_length=3,
|
|
animation_mode=AnimationModes.STATIC)
|
|
|
|
keyboard.extensions.append(rgb_ext)
|
|
##
|
|
|
|
## Oled module configuration
|
|
oled_handler = Oled()
|
|
oled_handler.locks = locks
|
|
oled_handler.refresh_rate = 0.2
|
|
oled_handler.pins = (board.D3, board.D2)
|
|
|
|
keyboard.modules.append(oled_handler)
|
|
##
|
|
|
|
## Encoder configuration
|
|
encoder_handler = EncoderHandler()
|
|
encoder_handler.pins = ((board.A2, board.A1, None, False),)
|
|
encoder_handler.map = [(( KC.VOLU, KC.VOLD, KC.C),), (( KC.RGB_HUI, KC.RGB_HUD, KC.C), )]
|
|
|
|
keyboard.modules.append(encoder_handler)
|
|
##
|
|
|
|
## Keyboard debug flag
|
|
keyboard.debug_enabled = True
|
|
##
|
|
|
|
## Keyboard Matrix definition
|
|
keyboard.row_pins = (board.D5, board.D6, board.D7, board.D8, board.D9)
|
|
keyboard.col_pins = (board.SCK, board.MISO, board.MOSI, board.D10)
|
|
keyboard.diode_orientation = DiodeOrientation.COL2ROW
|
|
##
|
|
|
|
## Define keymap for the board
|
|
#TODO: Move keymap to its own module
|
|
keyboard.keymap = [
|
|
[KC.MO(1), KC.NUMPAD_SLASH, KC.NUMPAD_ASTERISK, KC.NUMPAD_MINUS,
|
|
KC.NUMPAD_7, KC.NUMPAD_8, KC.NUMPAD_9, KC.NUMPAD_PLUS,
|
|
KC.NUMPAD_4, KC.NUMPAD_5, KC.NUMPAD_6, KC.NO,
|
|
KC.NUMPAD_1, KC.NUMPAD_2, KC.NUMPAD_3, KC.NO, KC.NO,
|
|
KC.NUMPAD_0, KC.NUMPAD_DOT, KC.NUMPAD_ENTER],
|
|
[KC.NO, KC.NUM_LOCK, KC.NUMPAD_ASTERISK, KC.RGB_AND,
|
|
KC.RGB_MODE_PLAIN, KC.RGB_MODE_BREATHE, KC.RGB_MODE_RAINBOW, KC.RGB_ANI,
|
|
KC.NUMPAD_4, KC.NUMPAD_5, KC.NUMPAD_6, KC.NO,
|
|
KC.NUMPAD_1, KC.NUMPAD_2, KC.NUMPAD_3, KC.NO, KC.NO,
|
|
KC.NUMPAD_0, KC.NUMPAD_DOT, KC.RGB_MODE_RAINBOW]
|
|
]
|
|
##
|
|
|
|
## Start the board
|
|
if __name__ == '__main__':
|
|
keyboard.go()
|
|
## |