pub enum Action {
Show 45 variants
None,
LeftClick,
RightClick,
MiddleClick,
MouseBack,
MouseForward,
Copy,
Paste,
Cut,
Undo,
Redo,
SelectAll,
Find,
Save,
BrowserBack,
BrowserForward,
NewTab,
CloseTab,
ReopenTab,
NextTab,
PrevTab,
ReloadPage,
MissionControl,
AppExpose,
PreviousDesktop,
NextDesktop,
ShowDesktop,
LaunchpadShow,
LockScreen,
Screenshot,
CaptureRegion,
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.
This type is pure config data: OS-level event synthesis for each variant
lives in the openlogi-inject crate (openlogi_inject::execute), keeping
this crate platform- and IO-free.
Variants§
None
Suppress the input entirely — the button or wheel direction is captured but no OS event is synthesised, so the physical input does nothing.
LeftClick
Primary mouse button.
RightClick
Secondary mouse button.
MiddleClick
Middle mouse button (wheel click).
MouseBack
Mouse “back” side button (extra button 4). Synthesizes the real mouse
button event, which browsers and most apps interpret as “navigate back”
natively — unlike Action::BrowserBack, which sends ⌘[ and is ignored
by many apps.
MouseForward
Mouse “forward” side button (extra button 5). Native counterpart to
Action::MouseBack; see Action::BrowserForward for the ⌘] form.
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 on macOS / Ctrl+Shift+Z on Linux).
Note: Ctrl+Y is the dominant redo shortcut in LibreOffice and many GTK
apps. Ctrl+Shift+Z is used here because it mirrors the macOS convention
and works in GNOME text fields, browsers, and Electron apps. If Ctrl+Y
coverage is needed, a CustomShortcut binding is the escape hatch.
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 (⌃↓).
PreviousDesktop
Switch to the previous desktop / Space.
NextDesktop
Switch to the next desktop / Space.
ShowDesktop
Show the desktop (hide all windows).
LaunchpadShow
Open Launchpad.
LockScreen
Lock the screen (⌘⌃Q on macOS).
On Linux, calls org.freedesktop.login1.Manager.LockSession($XDG_SESSION_ID)
on the system bus (current session only). Falls back to Super+L when
$XDG_SESSION_ID is unset or on non-systemd systems.
Screenshot
Capture a screenshot.
CaptureRegion
Capture a selected screen region to the clipboard.
macOS uses Cmd+Shift+Ctrl+4; Windows uses Win+Shift+S. Linux delegates to the desktop environment’s screenshot handler via Print Screen.
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 openlogi_inject::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.
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.