my perpetually in-progress macropad
at main 113 lines 4.1 kB view raw
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))