my perpetually in-progress macropad
1from adafruit_macropad import MacroPad
2from rainbowio import colorwheel
3
4macropad = MacroPad()
5
6macropad.display_image("puma.bmp")
7text_lines = macropad.display_text(title="PumagregOS")
8tones = [196, 220, 246, 262, 294, 330, 349, 392, 440, 494, 523, 587]
9last_encoder_position = 0
10
11# TODO - figure out how ls to show glyphs for arrows in this display
12pad_display = [
13 ["7 8 9", "4 5 6", "1 2 4", "0 . E"], # numpad
14 ["- u +", "l s r", "* d /", "b U D"], # math + arrows
15]
16
17while True:
18
19 # listening for encoder events
20 if macropad.encoder != last_encoder_position:
21
22 if 0 <= macropad.encoder < len(pad_display):
23 # repl
24 print("Encoder changed: {}\n".format(macropad.encoder))
25
26 # update display to show current pad layout
27 text_lines[0].text = pad_display[macropad.encoder][0]
28 text_lines[1].text = pad_display[macropad.encoder][1]
29 text_lines[2].text = pad_display[macropad.encoder][2]
30 text_lines[3].text = pad_display[macropad.encoder][3]
31 text_lines.show()
32 else:
33 macropad.pixels.fill((0, 0, 0))
34 macropad.display_image("puma.bmp")
35
36 last_encoder_position = macropad.encoder
37
38 # listening for key events
39 key_event = macropad.keys.events.get()
40 if key_event:
41 if key_event.pressed:
42
43 # repl
44 print("Encoder: {}".format(macropad.encoder))
45 print("Key pressed: {}".format(key_event.key_number))
46 print("Encoder switch: {}\n".format(macropad.encoder_switch))
47
48 # pixels
49 macropad.pixels[key_event.key_number] = colorwheel(
50 int(255 / 12) * key_event.key_number
51 )
52
53 # tones
54 macropad.start_tone(tones[key_event.key_number])
55
56 """
57 _._ _,-'""`-._
58 (,-.`._,'( ||`-/| PumagregOS
59 `-.-' | )-`( , o o) Keyboard layouts
60 `- `_`"'- 🪳
61
62 """
63
64 if macropad.encoder == 0:
65 # encoder 0 - numpad
66 pad_layout = [
67 macropad.Keycode.KEYPAD_SEVEN,
68 macropad.Keycode.KEYPAD_EIGHT,
69 macropad.Keycode.KEYPAD_NINE,
70 macropad.Keycode.KEYPAD_FOUR,
71 macropad.Keycode.KEYPAD_FIVE,
72 macropad.Keycode.KEYPAD_SIX,
73 macropad.Keycode.KEYPAD_ONE,
74 macropad.Keycode.KEYPAD_TWO,
75 macropad.Keycode.KEYPAD_THREE,
76 macropad.Keycode.KEYPAD_ZERO,
77 macropad.Keycode.KEYPAD_PERIOD,
78 macropad.Keycode.KEYPAD_ENTER,
79 ]
80 elif macropad.encoder == 1:
81 # encoder 1 - math + arrows
82 pad_layout = [
83 macropad.Keycode.KEYPAD_MINUS,
84 macropad.Keycode.UP_ARROW,
85 macropad.Keycode.KEYPAD_PLUS,
86 macropad.Keycode.LEFT_ARROW,
87 macropad.Keycode.SPACEBAR,
88 macropad.Keycode.RIGHT_ARROW,
89 macropad.Keycode.KEYPAD_ASTERISK,
90 macropad.Keycode.DOWN_ARROW,
91 macropad.Keycode.KEYPAD_FORWARD_SLASH,
92 macropad.Keycode.BACKSPACE,
93 macropad.Keycode.PAGE_UP,
94 macropad.Keycode.PAGE_DOWN,
95 ]
96
97 if "pad_layout" in locals():
98 macropad.keyboard.send(pad_layout[key_event.key_number])
99
100 """
101 # encoder 2 - testing
102 elif macropad.encoder == 2:
103 if key_event.key_number == 0:
104 macropad.keyboard_layout.write("wow 0")
105 elif key_event.key_number == 1:
106 macropad.keyboard_layout.write("wow 1")
107 else:
108 macropad.keyboard_layout.write("wow anything but 0 or 1")
109 """
110
111 else:
112 macropad.stop_tone()
113 macropad.pixels.fill((0, 0, 0))