yampad_kmk/main.py
2022-04-27 08:42:19 +10:00

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()
##