Skip to content

Commit 32b3a54

Browse files
authored
Merge pull request #1773 from jedgarpark/numpad-4000
first commit
2 parents 33cdbfe + bd8fd4f commit 32b3a54

1 file changed

Lines changed: 122 additions & 0 deletions

File tree

Numpad_4000/code.py

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# SPDX-FileCopyrightText: 2021 John Park for Adafruit Industries
2+
# SPDX-License-Identifier: MIT
3+
# NUMPAD 4000! Made with snap-apart NeoKey PCB and Feather RP2040.
4+
5+
import board
6+
import keypad
7+
import neopixel
8+
import usb_hid
9+
from adafruit_hid.keyboard import Keyboard
10+
from adafruit_hid.keycode import Keycode
11+
12+
COLUMNS = 5
13+
ROWS = 5
14+
15+
BLUE = 0x000510
16+
WHITE = 0x303030
17+
RED = 0xFF0000
18+
19+
20+
board_pix = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.1)
21+
board_pix[0] = BLUE
22+
23+
key_pixels = neopixel.NeoPixel(board.D5, 30, brightness=0.1)
24+
key_pixels.fill(WHITE)
25+
26+
keys = keypad.KeyMatrix(
27+
row_pins=(board.D4, board.A3, board.A2, board.A1, board.A0),
28+
column_pins=(board.D13, board.D12, board.D11, board.D10, board.D9),
29+
columns_to_anodes=False,
30+
)
31+
32+
kbd = Keyboard(usb_hid.devices)
33+
34+
keycode_LUT = [
35+
0, 1, 2, 3, 4,
36+
5, 6, 7, 8,
37+
10, 11, 12, 13, 14,
38+
15, 16, 17, 18,
39+
20, 21, 23, 24
40+
]
41+
42+
pixel_LUT = [
43+
0, 1, 2, 3, 4,
44+
8, 7, 6, 5,
45+
10, 11, 12, 13, 14,
46+
18, 17, 16, 15,
47+
20, 21, 23, 24
48+
]
49+
# create a keycode dictionary including modifier state and keycodes
50+
keymap = {
51+
(0): (0, Keycode.KEYPAD_NUMLOCK),
52+
(1): (0, Keycode.BACKSPACE),
53+
(2): (0, Keycode.FORWARD_SLASH),
54+
(3): (0, Keycode.KEYPAD_ASTERISK),
55+
(4): (0, Keycode.KEYPAD_MINUS),
56+
57+
(5): (0, Keycode.PAGE_UP),
58+
(6): (0, Keycode.KEYPAD_SEVEN),
59+
(7): (0, Keycode.KEYPAD_EIGHT),
60+
(8): (0, Keycode.KEYPAD_NINE),
61+
62+
(9): (0, Keycode.PAGE_DOWN),
63+
(10): (0, Keycode.KEYPAD_FOUR),
64+
(11): (0, Keycode.KEYPAD_FIVE),
65+
(12): (0, Keycode.KEYPAD_SIX),
66+
(13): (0, Keycode.KEYPAD_PLUS),
67+
68+
(14): (1, Keycode.SHIFT),
69+
(15): (0, Keycode.KEYPAD_ONE),
70+
(16): (0, Keycode.KEYPAD_TWO),
71+
(17): (0, Keycode.KEYPAD_THREE),
72+
73+
(18): (2, Keycode.CONTROL),
74+
(19): (0, Keycode.KEYPAD_ZERO),
75+
(20): (0, Keycode.KEYPAD_PERIOD),
76+
(21): (0, Keycode.KEYPAD_EQUALS) # KEYPAD_ENTER on non-mac
77+
}
78+
79+
shift_mod = False
80+
ctrl_mod = False
81+
82+
83+
while True:
84+
85+
key_event = keys.events.get()
86+
if key_event:
87+
if key_event.pressed:
88+
if keymap[keycode_LUT.index(key_event.key_number)][0] == 1:
89+
shift_mod = True
90+
elif keymap[keycode_LUT.index(key_event.key_number)][0] == 2:
91+
ctrl_mod = True
92+
if shift_mod is False and ctrl_mod is False:
93+
kbd.press(keymap[keycode_LUT.index(key_event.key_number)][1])
94+
print(keymap[keycode_LUT.index(key_event.key_number)][1])
95+
key_pixels[pixel_LUT.index(key_event.key_number)] = RED
96+
elif shift_mod is True and ctrl_mod is False:
97+
kbd.press(Keycode.SHIFT, keymap[keycode_LUT.index(key_event.key_number)][1])
98+
print(keymap[keycode_LUT.index(key_event.key_number)][1])
99+
key_pixels[pixel_LUT.index(key_event.key_number)] = RED
100+
elif shift_mod is False and ctrl_mod is True:
101+
kbd.press(Keycode.CONTROL, keymap[keycode_LUT.index(key_event.key_number)][1])
102+
print(keymap[keycode_LUT.index(key_event.key_number)][1])
103+
key_pixels[pixel_LUT.index(key_event.key_number)] = RED
104+
elif shift_mod is True and ctrl_mod is True:
105+
kbd.press(
106+
Keycode.SHIFT,
107+
Keycode.CONTROL,
108+
keymap[keycode_LUT.index(key_event.key_number)][1]
109+
)
110+
print(keymap[keycode_LUT.index(key_event.key_number)][1])
111+
key_pixels[pixel_LUT.index(key_event.key_number)] = RED
112+
board_pix[0] = WHITE
113+
114+
if key_event.released:
115+
if keymap[keycode_LUT.index(key_event.key_number)][0] == 1: # un-shift
116+
shift_mod = False
117+
elif keymap[keycode_LUT.index(key_event.key_number)][0] == 2: # un-ctrl
118+
ctrl_mod = False
119+
120+
kbd.release(keymap[keycode_LUT.index(key_event.key_number)][1])
121+
key_pixels[pixel_LUT.index(key_event.key_number)] = WHITE
122+
board_pix[0] = BLUE

0 commit comments

Comments
 (0)