pub enum Action {
Show 39 variants
LeftClick,
RightClick,
MiddleClick,
Copy,
Paste,
Cut,
Undo,
Redo,
SelectAll,
Find,
Save,
BrowserBack,
BrowserForward,
NewTab,
CloseTab,
ReopenTab,
NextTab,
PrevTab,
ReloadPage,
MissionControl,
AppExpose,
ShowDesktop,
LaunchpadShow,
LockScreen,
Screenshot,
PlayPause,
NextTrack,
PrevTrack,
VolumeUp,
VolumeDown,
MuteVolume,
CycleDpiPresets,
SetDpiPreset(u8),
ToggleSmartShift,
ScrollUp,
ScrollDown,
HorizontalScrollLeft,
HorizontalScrollRight,
CustomShortcut(KeyCombo),
}Expand description
What pressing a ButtonId should do.
Serialization uses serde’s default external tagging: unit variants
serialize as a bare string ("BrowserBack") and the tuple variant
serializes as a single-key table ({ CustomShortcut = "my chord" }).
Stability contract: existing variant names are frozen — they form the
on-disk config.toml schema. New variants may be appended freely; removing
or renaming a variant requires a schema_version bump and a migration.
Action::execute synthesizes the OS-level event for each variant.
On macOS it posts the event via CGEventPost(kCGHIDEventTap, …).
On other platforms it logs a warning and returns immediately — the binary
compiles on all targets.
§Manual verification
execute is intentionally excluded from the automated test suite because
it would need to intercept the OS event queue. Smoke-test it manually:
bind a button to any action in the GUI and confirm the expected system event
fires when the button is pressed.
Variants§
LeftClick
Primary mouse button.
RightClick
Secondary mouse button.
MiddleClick
Middle mouse button (wheel click).
Copy
Copy the current selection (⌘C / Ctrl+C).
Paste
Paste from the clipboard (⌘V / Ctrl+V).
Cut
Cut the current selection (⌘X / Ctrl+X).
Undo
Undo the last action (⌘Z / Ctrl+Z).
Redo
Redo the last undone action (⌘⇧Z / Ctrl+Y).
SelectAll
Select all content (⌘A / Ctrl+A).
Find
Open the find / search bar (⌘F / Ctrl+F).
Save
Save the current document (⌘S / Ctrl+S).
BrowserBack
Navigate backward in browser history.
BrowserForward
Navigate forward in browser history.
NewTab
Open a new tab (⌘T / Ctrl+T).
CloseTab
Close the current tab (⌘W / Ctrl+W).
ReopenTab
Reopen the last closed tab (⌘⇧T / Ctrl+Shift+T).
NextTab
Switch to the next tab (⌃⇥ / Ctrl+Tab).
PrevTab
Switch to the previous tab (⌃⇧⇥ / Ctrl+Shift+Tab).
ReloadPage
Reload the current page (⌘R / Ctrl+R).
MissionControl
macOS Mission Control (⌃↑).
AppExpose
macOS App Exposé — all windows for the current app (⌃↓).
ShowDesktop
Show the desktop (hide all windows).
LaunchpadShow
Open Launchpad.
LockScreen
Lock the screen.
Screenshot
Capture a screenshot.
PlayPause
Toggle media play/pause.
NextTrack
Skip to the next track.
PrevTrack
Go back to the previous track.
VolumeUp
Increase system volume.
VolumeDown
Decrease system volume.
MuteVolume
Toggle system mute.
CycleDpiPresets
Step through the configured DPI preset list (P1.7).
SetDpiPreset(u8)
Jump to a specific zero-based preset in the device’s DPI preset list. Out-of-range indices clamp to the list length at fire time (P1.7).
ToggleSmartShift
Toggle the HID++ SmartShift ratchet/free-spin wheel mode (P1.1).
ScrollUp
Synthesise a vertical scroll-up tick.
ScrollDown
Synthesise a vertical scroll-down tick.
HorizontalScrollLeft
Synthesise a horizontal scroll-left tick.
HorizontalScrollRight
Synthesise a horizontal scroll-right tick.
CustomShortcut(KeyCombo)
Replay an arbitrary recorded key chord (P1.3).
Holds the structured chord data so execute can post the real
keystroke (macOS: CGEventPost with the encoded modifier flags).
The display field is used by Action::label so the popover
shows the user-friendly chord name.
Implementations§
Source§impl Action
impl Action
Sourcepub fn label(&self) -> String
pub fn label(&self) -> String
Display label for the popover row.
Returns String rather than &str so parameterized variants (e.g.
SetDpiPreset(i), CustomShortcut(s)) can build a label that
includes their payload.
Sourcepub fn category(&self) -> Category
pub fn category(&self) -> Category
Which Category this action belongs to, used for popover grouping.
Sourcepub fn catalog() -> Vec<Action>
pub fn catalog() -> Vec<Action>
All pickable actions in a deterministic order.
Action::CustomShortcut is intentionally excluded — it is opened via
“Record shortcut…” (P1.3), not selected from the catalog.
Sourcepub fn execute(&self)
pub fn execute(&self)
Synthesise the OS-level event for this action.
On macOS, key events are posted via CGEventPost(kCGHIDEventTap, …)
using virtual key codes from the standard US keyboard layout.
Mouse-click variants and actions with no direct CGEvent equivalent
(e.g. CycleDpiPresets, ToggleSmartShift) are handled at the hook
layer (P0.1) and log a debug trace here instead.
On other platforms a warning is logged and the function returns immediately — the binary compiles clean on all targets.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Action
impl<'de> Deserialize<'de> for Action
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Action
impl StructuralPartialEq for Action
Auto Trait Implementations§
impl Freeze for Action
impl RefUnwindSafe for Action
impl Send for Action
impl Sync for Action
impl Unpin for Action
impl UnsafeUnpin for Action
impl UnwindSafe for Action
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.