adding macro_utils and then implementing them in the default numpad app.

This commit is contained in:
Lucas Oskorep
2022-09-20 01:38:32 -04:00
parent 44aaa083cc
commit cb4dac9d6b
4 changed files with 76 additions and 31 deletions
+54 -24
View File
@@ -8,25 +8,12 @@ from adafruit_hid.keycode import Keycode
from rainbowio import colorwheel
from macropad_os import App
from macropad_os.app_utils import rgb_from_int
from macropad_os.app_utils import rgb_from_int, MacroSet, Macro
COLOR_UPDATE_RATE = 33000000 # .033 seconds
labels = [
"7", "8", "9",
"4", "5", "6",
"1", "2", "3",
"0", ".", "SHIFT"
]
SWAP_MODE = lambda x: not x
modified_labels = [
"<", ">", "&",
"(", ")", "%",
"/", "+", "-",
"*", "=", "SHIFT"
]
COLOR_UPDATE_RATE = 33000000 # .033 seconds
class NumpadApp(App):
@@ -39,6 +26,40 @@ class NumpadApp(App):
self.title = "Numpad"
self.modifier_pressed = False
self.last_color_update = 0
self.modifier_pressed = False
self.macros = MacroSet(
[
Macro("7", Keycode.KEYPAD_SEVEN), Macro("8", Keycode.KEYPAD_EIGHT), Macro("9", Keycode.KEYPAD_NINE),
Macro("4", Keycode.KEYPAD_FOUR), Macro("5", Keycode.KEYPAD_FIVE), Macro("6", Keycode.KEYPAD_SIX),
Macro("1", Keycode.KEYPAD_ONE), Macro("2", Keycode.KEYPAD_TWO), Macro("3", Keycode.KEYPAD_THREE),
Macro("0", Keycode.KEYPAD_ZERO), Macro(".", Keycode.KEYPAD_PERIOD),
Macro("Mod", self.swap_modifier, released=self.swap_modifier)
],
encoder_up=Macro("+", Keycode.KEYPAD_PLUS),
encoder_down=Macro("-", Keycode.KEYPAD_MINUS),
)
self.mod_macros = MacroSet([
Macro("<", Keycode.LEFT_ARROW), Macro(">", Keycode.RIGHT_ARROW), Macro("&", Keycode.SHIFT, Keycode.SEVEN),
Macro("(", Keycode.SHIFT, Keycode.NINE), Macro(")", Keycode.SHIFT, Keycode.ZERO),Macro("%", Keycode.SHIFT, Keycode.FIVE),
Macro("/", Keycode.FORWARD_SLASH), Macro("+", Keycode.KEYPAD_PLUS), Macro("-", Keycode.MINUS),
Macro("*", Keycode.SHIFT, Keycode.EIGHT), Macro("=", Keycode.EQUALS), Macro("Mod", self.swap_modifier, released=self.swap_modifier)
],
encoder_up=Macro("+", Keycode.KEYPAD_PLUS),
encoder_down=Macro("-", Keycode.KEYPAD_MINUS),
)
self.active_macros = self.macros
def swap_modifier(self):
self.modifier_pressed = not self.modifier_pressed
if self.modifier_pressed:
self.active_macros = self.mod_macros
else:
self.active_macros = self.macros
for i in range(12):
self.labels[i].text = self.active_macros.get_macro_from_key(i).name
def on_start(self):
print("on start from the app!")
@@ -46,7 +67,7 @@ class NumpadApp(App):
self.set_title(self.title)
self.lit_keys = [True] * 12
for i in range(12):
self.labels.append(Label(terminalio.FONT, text=labels[i]))
self.labels.append(Label(terminalio.FONT, text=self.active_macros.get_macro_from_key(i).name))
for index in range(12):
x = index % 3
y = index // 3
@@ -82,12 +103,21 @@ class NumpadApp(App):
colors.append((0, 0, 0))
self.set_colors(colors)
def process_keys_pressed_callback(self, keyevent):
print(keyevent)
self.keyboard.send(Keycode.SHIFT,Keycode.SHIFT,Keycode.SHIFT, Keycode.A)
def process_keys_pressed_callback(self, key_event):
for code in self.active_macros.get_macro_from_key(key_event).codes:
if code:
if callable(code):
code()
else:
self.keyboard.send(code)
def process_keys_released_callback(self, keyevent):
print(keyevent)
def process_keys_released_callback(self, key_event):
release_action = self.active_macros.get_macro_from_key(key_event).released
if release_action:
if callable(release_action):
release_action()
else:
self.keyboard.send(release_action)
def process_enbcoder_changed(self, keyevent):
print(keyevent)
def process_enbcoder_changed(self, key_event):
print(key_event)
+2 -1
View File
@@ -1,2 +1,3 @@
from .static_lighting import *
from .helpers import *
from .helpers import *
from .macro_utils import *
-6
View File
@@ -1,6 +0,0 @@
from adafruit_hid.keycode import Keycode
class Key(object):
def __init__(self, name, keycode:Keycodes):
self.name = name
self.code = keycode
+20
View File
@@ -0,0 +1,20 @@
class Macro(object):
def __init__(self, name, *codes, released = None):
self.name = name
self.codes = codes
self.released = released
class MacroSet(object):
def __init__(self, key_macros: [Macro], encoder_up: Macro, encoder_down: Macro):
if len(key_macros) != 12:
raise ValueError("12 keys must be passed to a keyset")
self._key_macros = key_macros
self.encoder_up = encoder_up
self.encoder_down = encoder_down
def get_macro_from_key(self, key_index) -> Macro:
if key_index < 0 or key_index > 11:
raise ValueError("Invalid key index")
return self._key_macros[key_index]