Complete Action Catalog for OpenLogi: The Definitive Guide to All 45 Actions

OpenLogi exposes exactly 45 deterministic button-binding actions through the Action::catalog() method, ranging from basic mouse clicks to system-level macOS shortcuts, while excluding payload-carrying variants that require user input.

The complete action catalog for OpenLogi defines every assignable interaction available in the input remapping system. Located in crates/openlogi-core/src/binding/action.rs, the Action enum uses a macro-generated table to produce a deterministic, ordered list of all pickable actions that appear in the UI pop-over. This catalog represents the full set of zero-parameter actions users can bind to mouse buttons without additional configuration.

How the Action Catalog is Generated

The catalog originates from the for_each_unit_action! macro table defined in crates/openlogi-core/src/binding/action.rs. This macro enumerates every payload-free variant of the Action enum, preserving the exact presentation order for the UI picker.

The public method Action::catalog() iterates this table to return a Vec<Action> containing all 45 selectable variants. According to the OpenLogi source code, this method guarantees that the sequence matches the visual order in the Actions Ring interface, ensuring consistent user experience across the application.

The 45 Actions in OpenLogi's Catalog

The following list presents all actions in the exact order returned by Action::catalog(), organized by functional category for clarity:

Mouse Controls

  • LeftClick – Primary mouse button activation
  • RightClick – Secondary mouse button activation
  • MiddleClick – Mouse wheel click action
  • MouseBack – Extra button 4 for "back" navigation
  • MouseForward – Extra button 5 for "forward" navigation

Clipboard and Editing

  • Copy – Copy selection (⌘C / Ctrl+C)
  • Paste – Paste from clipboard (⌘V / Ctrl+V)
  • Cut – Cut selection (⌘X / Ctrl+X)
  • Undo – Undo last action (⌘Z / Ctrl+Z)
  • Redo – Redo last undone action (⌘⇧Z / Ctrl+Shift+Z)
  • SelectAll – Select all content (⌘A / Ctrl+A)
  • Find – Open find/search bar (⌘F / Ctrl+F)
  • Save – Save current document (⌘S / Ctrl+S)

Browser Navigation

  • BrowserBack – Navigate backward in browser history
  • BrowserForward – Navigate forward in browser history
  • NewTab – Open a new browser tab
  • CloseTab – Close the current tab
  • ReopenTab – Restore the last closed tab
  • NextTab – Switch to the next tab
  • PrevTab – Switch to the previous tab
  • ReloadPage – Refresh the current page

macOS System Features

  • MissionControl – Activate macOS Mission Control
  • AppExpose – Show all windows of the current application
  • PreviousDesktop – Switch to the previous desktop/Space
  • NextDesktop – Switch to the next desktop/Space
  • ShowDesktop – Hide all windows to show the desktop
  • LaunchpadShow – Open the macOS Launchpad

System and Security

  • None – Suppress input (do nothing)
  • LockScreen – Lock the computer screen
  • Screenshot – Capture full-screen screenshot
  • CaptureRegion – Capture selected region to clipboard
  • Sleep – Put the computer to sleep

Interface and Advanced Features

  • ShowActionsRing – Open the Actions Ring overlay at cursor position

Media Controls

  • PlayPause – Toggle media playback
  • NextTrack – Skip to the next media track
  • PrevTrack – Return to the previous media track
  • VolumeUp – Increase system volume
  • VolumeDown – Decrease system volume
  • MuteVolume – Toggle mute state

Device-Specific and Scrolling

  • CycleDpiPresets – Rotate through DPI sensitivity presets
  • ToggleSmartShift – Toggle between ratchet and free-spin wheel modes
  • ScrollUp – Vertical scroll-up tick
  • ScrollDown – Vertical scroll-down tick
  • HorizontalScrollLeft – Horizontal scroll-left tick
  • HorizontalScrollRight – Horizontal scroll-right tick

Excluded Action Types

The catalog() method intentionally omits payload-carrying variants that require user-provided data. These excluded actions include:

  • CustomShortcut – Requires key combination input
  • SetDpiPreset – Requires specific DPI value
  • TypeText – Requires text string input
  • RunAppleScript – Requires script content
  • RunShellCommand – Requires command string
  • Workflow – Requires workflow definition
  • OpenApplication – Requires application path
  • HoldShortcut – Requires duration parameters

These variants are instantiated programmatically rather than selected from the UI picker, which is why they remain outside the deterministic catalog.

Accessing the Catalog Programmatically

To retrieve the complete action list in Rust code, use the catalog() associated function:

// Retrieve the full, ordered list of pickable actions
let actions = openlogi_core::binding::Action::catalog();

// Iterate and print each action's label
for action in actions {
    println!("{} – {}", action.label(), action.translation_key().unwrap_or("custom"));
}

You can also verify whether a specific action is user-pickable by checking against the catalog:

use openlogi_core::binding::Action;

fn is_pickable(a: &Action) -> bool {
    // `catalog()` contains exactly the pickable actions
    openlogi_core::binding::Action::catalog().contains(a)
}

Key Implementation Files

Understanding the complete action catalog for OpenLogi requires familiarity with these source files:

Summary

  • OpenLogi provides 45 deterministic, pickable actions through the Action::catalog() method.
  • The catalog is generated from a macro table in crates/openlogi-core/src/binding/action.rs that preserves UI presentation order.
  • Actions range from basic mouse clicks to complex macOS system features like Mission Control and SmartShift toggling.
  • Payload-carrying variants requiring user input are excluded from the catalog and handled separately.
  • The system ensures type-safe binding through Rust's enum system while maintaining a consistent user interface order.

Frequently Asked Questions

How many actions are available in the OpenLogi catalog?

The OpenLogi catalog contains exactly 45 pickable actions as returned by Action::catalog(). This count includes all mouse buttons, editing commands, browser navigation, media controls, system features, and scrolling actions, but excludes payload-dependent variants.

Why are actions like CustomShortcut missing from the catalog?

Payload-carrying actions such as CustomShortcut, TypeText, and RunShellCommand require additional user-provided data (key combinations, text strings, or script content). Since the catalog() method returns only deterministic, zero-parameter variants suitable for UI pickers, these configurable actions are instantiated programmatically rather than being listed in the macro table.

How do I programmatically check if an action is available in the picker?

Use the catalog() method to retrieve the complete vector of pickable actions, then check containment:

let is_available = Action::catalog().contains(&my_action);

This returns true only for the 45 standard actions, returning false for payload-carrying variants or any custom action types not included in the macro-generated table.

Where is the display order of actions defined?

The display order is hardcoded in the for_each_unit_action! macro within crates/openlogi-core/src/binding/action.rs. The Action::catalog() method iterates this macro in declaration order, ensuring the UI pop-over, the Actions Ring, and any programmatic access present actions in the identical sequence.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →