diff --git a/Macropad_Hotkeys/code.py b/Macropad_Hotkeys/code.py index 85cf40495..72a6a25da 100755 --- a/Macropad_Hotkeys/code.py +++ b/Macropad_Hotkeys/code.py @@ -11,6 +11,7 @@ key sequences. import os import displayio import terminalio +import time from adafruit_display_shapes.rect import Rect from adafruit_display_text import label from adafruit_macropad import MacroPad @@ -48,51 +49,50 @@ class App: # INITIALIZATION ----------------------- +if True: + macropad = MacroPad() + macropad.display.auto_refresh = False + macropad.pixels.auto_write = False -macropad = MacroPad() -macropad.display.auto_refresh = False -macropad.pixels.auto_write = False + # Set up displayio group with all the labels + group = displayio.Group() + for key_index in range(12): + x = key_index % 3 + y = key_index // 3 + group.append(label.Label(terminalio.FONT, text='', color=0xFFFFFF, + anchored_position=((macropad.display.width - 1) * x / 2, + macropad.display.height - 1 - + (3 - y) * 12), + anchor_point=(x / 2, 1.0))) + group.append(Rect(0, 0, macropad.display.width, 12, fill=0xFFFFFF)) + group.append(label.Label(terminalio.FONT, text='', color=0x000000, + anchored_position=(macropad.display.width//2, -2), + anchor_point=(0.5, 0.0))) + macropad.display.show(group) -# Set up displayio group with all the labels -group = displayio.Group() -for key_index in range(12): - x = key_index % 3 - y = key_index // 3 - group.append(label.Label(terminalio.FONT, text='', color=0xFFFFFF, - anchored_position=((macropad.display.width - 1) * x / 2, - macropad.display.height - 1 - - (3 - y) * 12), - anchor_point=(x / 2, 1.0))) -group.append(Rect(0, 0, macropad.display.width, 12, fill=0xFFFFFF)) -group.append(label.Label(terminalio.FONT, text='', color=0x000000, - anchored_position=(macropad.display.width//2, -2), - anchor_point=(0.5, 0.0))) -macropad.display.show(group) + # Load all the macro key setups from .py files in MACRO_FOLDER + apps = [] + files = os.listdir(MACRO_FOLDER) + files.sort() + for filename in files: + if filename.endswith('.py'): + try: + module = __import__(MACRO_FOLDER + '/' + filename[:-3]) + apps.append(App(module.app)) + except (SyntaxError, ImportError, AttributeError, KeyError, NameError, + IndexError, TypeError) as err: + pass -# Load all the macro key setups from .py files in MACRO_FOLDER -apps = [] -files = os.listdir(MACRO_FOLDER) -files.sort() -for filename in files: - if filename.endswith('.py'): - try: - module = __import__(MACRO_FOLDER + '/' + filename[:-3]) - apps.append(App(module.app)) - except (SyntaxError, ImportError, AttributeError, KeyError, NameError, - IndexError, TypeError) as err: + if not apps: + group[13].text = 'NO MACRO FILES FOUND' + macropad.display.refresh() + while True: pass -if not apps: - group[13].text = 'NO MACRO FILES FOUND' - macropad.display.refresh() - while True: - pass - -last_position = None -last_encoder_switch = macropad.encoder_switch_debounced.pressed -app_index = 0 -apps[app_index].switch() - + last_position = None + last_encoder_switch = macropad.encoder_switch_debounced.pressed + app_index = 0 + apps[app_index].switch() # MAIN LOOP ---------------------------- @@ -128,6 +128,15 @@ while True: sequence = apps[app_index].macros[key_number][2] if pressed: + # the sequence is arbitrary-length + # each item in the sequence is either + # an integer (e.g., Keycode.KEYPAD_MINUS), + # a floating point value (e.g., 0.20) + # or a string. + # Positive Integers ==> key pressed + # Negative Integers ==> key released + # Float ==> sleep in seconds + # String ==> each key in string pressed & released if key_number < 12: # No pixel for encoder button macropad.pixels[key_number] = 0xFFFFFF macropad.pixels.show() @@ -137,6 +146,8 @@ while True: macropad.keyboard.press(item) else: macropad.keyboard.release(-item) + elif isinstance(item, float): + time.sleep(item) else: macropad.keyboard_layout.write(item) else: