summaryrefslogtreecommitdiff
path: root/src/macros/1-ff.py
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@dailly.me>2023-05-22 08:40:47 +0200
committerSébastien Dailly <sebastien@dailly.me>2023-05-22 08:40:47 +0200
commit597b007333d8ec0d9cfd29e6941fcbe57379108a (patch)
tree0cf87e1ac487e7deb91acf7f2bec70bd4dd06703 /src/macros/1-ff.py
Initial commit
Diffstat (limited to 'src/macros/1-ff.py')
-rw-r--r--src/macros/1-ff.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/macros/1-ff.py b/src/macros/1-ff.py
new file mode 100644
index 0000000..f1d26ce
--- /dev/null
+++ b/src/macros/1-ff.py
@@ -0,0 +1,83 @@
+# SPDX-FileCopyrightText: 2021 Phillip Burgess for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+
+# MACROPAD Hotkeys example: Mouse control
+
+# The syntax for Mouse macros is highly peculiar, in order to maintain
+# backward compatibility with the original keycode-only macro files.
+# The third item for each macro is a list in brackets, and each value within
+# is normally an integer (Keycode), float (delay) or string (typed literally).
+# Consumer Control codes were added as list-within-list, and then mouse
+# further complicates this by adding dicts-within-list. Each mouse-related
+# dict can have any mix of keys 'buttons' w/integer mask of button values
+# (positive to press, negative to release), 'x' w/horizontal motion,
+# 'y' w/vertical and 'wheel' with scrollwheel motion.
+
+# To reference Mouse constants, import Mouse like so...
+from keycode_win_frnb import Keycode # Use the french bepo layout
+from adafruit_hid.mouse import Mouse
+
+import skeleton
+from actions import Action
+
+def reload(macropad, key, pressed):
+ Action().key(pressed, [Keycode.CONTROL, Keycode.R])
+
+def tab(macropad, key, pressed):
+ Action().key(pressed, [Keycode.CONTROL, Keycode.T])
+
+def close(macropad, key, pressed):
+ Action().key(pressed, [Keycode.CONTROL, Keycode.W])
+
+def page_up(macropad, key, pressed):
+ macropad.mouse.move(
+ 0,
+ 0,
+ 1)
+
+def page_down(macropad, key, pressed):
+ macropad.mouse.move(
+ 0,
+ 0,
+ -1)
+
+class App(object):
+ def __init__(self):
+ self.group = skeleton.Group(0x050500,
+ [(9, "Page")
+ ,(10, "Tab")]
+ )
+
+ def rot_cw(self, macropad, key, pressed):
+ if self.group.selected == 10:
+ Action().key(pressed, [Keycode.CONTROL, Keycode.PAGE_DOWN])
+ else:
+ page_down(macropad, key, pressed)
+
+ def rot_ccw(self, macropad, key, pressed):
+ if self.group.selected == 10:
+ Action().key(pressed, [Keycode.CONTROL, Keycode.PAGE_UP])
+ else:
+ page_up(macropad, key, pressed)
+
+def key(code):
+ def action(macropad, key, pressed):
+ Action().key(pressed, code)
+ return action
+
+def build_application():
+ app = App()
+
+ configuration = skeleton.Configuration("Firefox")
+ configuration.registerKey(0, "^r", reload, 0x000500)
+ configuration.registerKey(1, "^t", tab, 0x000005)
+ configuration.registerKey(2, "x", close, 0x050000)
+ configuration.registerKey(3, "<", key([Keycode.CONTROL, Keycode.PAGE_UP]), 0x050505)
+ configuration.registerKey(5, ">", key([Keycode.CONTROL, Keycode.PAGE_DOWN]), 0x050505)
+ configuration.registerKey(12, "", app.rot_cw, None)
+ configuration.registerKey(13, "", app.rot_ccw,None)
+ configuration.registerGroup(app.group)
+ return configuration
+
+configuration = build_application()