first commit
This commit is contained in:
parent
72a3182b02
commit
bd8fd4fa9e
1 changed files with 122 additions and 0 deletions
122
Numpad_4000/code.py
Normal file
122
Numpad_4000/code.py
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
# SPDX-FileCopyrightText: 2021 John Park for Adafruit Industries
|
||||
# SPDX-License-Identifier: MIT
|
||||
# NUMPAD 4000! Made with snap-apart NeoKey PCB and Feather RP2040.
|
||||
|
||||
import board
|
||||
import keypad
|
||||
import neopixel
|
||||
import usb_hid
|
||||
from adafruit_hid.keyboard import Keyboard
|
||||
from adafruit_hid.keycode import Keycode
|
||||
|
||||
COLUMNS = 5
|
||||
ROWS = 5
|
||||
|
||||
BLUE = 0x000510
|
||||
WHITE = 0x303030
|
||||
RED = 0xFF0000
|
||||
|
||||
|
||||
board_pix = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.1)
|
||||
board_pix[0] = BLUE
|
||||
|
||||
key_pixels = neopixel.NeoPixel(board.D5, 30, brightness=0.1)
|
||||
key_pixels.fill(WHITE)
|
||||
|
||||
keys = keypad.KeyMatrix(
|
||||
row_pins=(board.D4, board.A3, board.A2, board.A1, board.A0),
|
||||
column_pins=(board.D13, board.D12, board.D11, board.D10, board.D9),
|
||||
columns_to_anodes=False,
|
||||
)
|
||||
|
||||
kbd = Keyboard(usb_hid.devices)
|
||||
|
||||
keycode_LUT = [
|
||||
0, 1, 2, 3, 4,
|
||||
5, 6, 7, 8,
|
||||
10, 11, 12, 13, 14,
|
||||
15, 16, 17, 18,
|
||||
20, 21, 23, 24
|
||||
]
|
||||
|
||||
pixel_LUT = [
|
||||
0, 1, 2, 3, 4,
|
||||
8, 7, 6, 5,
|
||||
10, 11, 12, 13, 14,
|
||||
18, 17, 16, 15,
|
||||
20, 21, 23, 24
|
||||
]
|
||||
# create a keycode dictionary including modifier state and keycodes
|
||||
keymap = {
|
||||
(0): (0, Keycode.KEYPAD_NUMLOCK),
|
||||
(1): (0, Keycode.BACKSPACE),
|
||||
(2): (0, Keycode.FORWARD_SLASH),
|
||||
(3): (0, Keycode.KEYPAD_ASTERISK),
|
||||
(4): (0, Keycode.KEYPAD_MINUS),
|
||||
|
||||
(5): (0, Keycode.PAGE_UP),
|
||||
(6): (0, Keycode.KEYPAD_SEVEN),
|
||||
(7): (0, Keycode.KEYPAD_EIGHT),
|
||||
(8): (0, Keycode.KEYPAD_NINE),
|
||||
|
||||
(9): (0, Keycode.PAGE_DOWN),
|
||||
(10): (0, Keycode.KEYPAD_FOUR),
|
||||
(11): (0, Keycode.KEYPAD_FIVE),
|
||||
(12): (0, Keycode.KEYPAD_SIX),
|
||||
(13): (0, Keycode.KEYPAD_PLUS),
|
||||
|
||||
(14): (1, Keycode.SHIFT),
|
||||
(15): (0, Keycode.KEYPAD_ONE),
|
||||
(16): (0, Keycode.KEYPAD_TWO),
|
||||
(17): (0, Keycode.KEYPAD_THREE),
|
||||
|
||||
(18): (2, Keycode.CONTROL),
|
||||
(19): (0, Keycode.KEYPAD_ZERO),
|
||||
(20): (0, Keycode.KEYPAD_PERIOD),
|
||||
(21): (0, Keycode.KEYPAD_EQUALS) # KEYPAD_ENTER on non-mac
|
||||
}
|
||||
|
||||
shift_mod = False
|
||||
ctrl_mod = False
|
||||
|
||||
|
||||
while True:
|
||||
|
||||
key_event = keys.events.get()
|
||||
if key_event:
|
||||
if key_event.pressed:
|
||||
if keymap[keycode_LUT.index(key_event.key_number)][0] == 1:
|
||||
shift_mod = True
|
||||
elif keymap[keycode_LUT.index(key_event.key_number)][0] == 2:
|
||||
ctrl_mod = True
|
||||
if shift_mod is False and ctrl_mod is False:
|
||||
kbd.press(keymap[keycode_LUT.index(key_event.key_number)][1])
|
||||
print(keymap[keycode_LUT.index(key_event.key_number)][1])
|
||||
key_pixels[pixel_LUT.index(key_event.key_number)] = RED
|
||||
elif shift_mod is True and ctrl_mod is False:
|
||||
kbd.press(Keycode.SHIFT, keymap[keycode_LUT.index(key_event.key_number)][1])
|
||||
print(keymap[keycode_LUT.index(key_event.key_number)][1])
|
||||
key_pixels[pixel_LUT.index(key_event.key_number)] = RED
|
||||
elif shift_mod is False and ctrl_mod is True:
|
||||
kbd.press(Keycode.CONTROL, keymap[keycode_LUT.index(key_event.key_number)][1])
|
||||
print(keymap[keycode_LUT.index(key_event.key_number)][1])
|
||||
key_pixels[pixel_LUT.index(key_event.key_number)] = RED
|
||||
elif shift_mod is True and ctrl_mod is True:
|
||||
kbd.press(
|
||||
Keycode.SHIFT,
|
||||
Keycode.CONTROL,
|
||||
keymap[keycode_LUT.index(key_event.key_number)][1]
|
||||
)
|
||||
print(keymap[keycode_LUT.index(key_event.key_number)][1])
|
||||
key_pixels[pixel_LUT.index(key_event.key_number)] = RED
|
||||
board_pix[0] = WHITE
|
||||
|
||||
if key_event.released:
|
||||
if keymap[keycode_LUT.index(key_event.key_number)][0] == 1: # un-shift
|
||||
shift_mod = False
|
||||
elif keymap[keycode_LUT.index(key_event.key_number)][0] == 2: # un-ctrl
|
||||
ctrl_mod = False
|
||||
|
||||
kbd.release(keymap[keycode_LUT.index(key_event.key_number)][1])
|
||||
key_pixels[pixel_LUT.index(key_event.key_number)] = WHITE
|
||||
board_pix[0] = BLUE
|
||||
Loading…
Reference in a new issue