Expand description
OS-level mouse-event hook for OpenLogi.
| Platform | Implementation |
|---|---|
| macOS | CGEventTap (same primitive used by Logi Options+) |
| Linux | evdev grab + uinput re-injection |
| Windows | WH_MOUSE_LL low-level mouse hook (motion is edge-clamped) |
§Usage
use openlogi_hook::{Hook, MouseEvent, EventDisposition};
if !Hook::has_accessibility() {
eprintln!("grant Accessibility access first");
return;
}
let hook = Hook::start(|event| {
println!("{event:?}");
EventDisposition::PassThrough
}).unwrap();
// … later, on shutdown:
hook.stop();Structs§
- Event
Device - Best-effort identity for the physical device that produced an OS event.
- Event
TapInfo - A live event tap installed somewhere in the system, as reported by
Hook::list_event_taps. Read-only diagnostic snapshot — enumerating taps needs no Accessibility grant and any process in the session sees them all. - Hook
- A running OS-level mouse hook. Call
Hook::stopto tear down. - KeyEvent
- A keyboard event observed by the hook.
- KeyModifiers
- Which modifier keys were held when a key event fired. Mirrors the
detectable macOS modifier flags. Note
Fnis deliberately absent — it is firmware-internal and never reported on non-function-row keys (see the function-key-remapper spec, Appendix A).
Enums§
- Button
Id - One of the user-rebindable hotspots on a Logi mouse. The order matches the
physical layout from front to side;
ButtonId::ALLis consumed by the default-binding generator and the popover trigger list. - Event
Disposition - What the hook callback wants the OS to do with the captured event.
- Hook
Error - Errors that
Hook::startand related functions can produce. - Hook
Event - Anything the OS hook can observe.
Mousepreserves the existing callback payload;Keyis the keyboard path added by the function-key remapper. Wrapping both in a union meansHook::start’s callback widens once and stays stable as further event classes arrive. - Mouse
Event - An event captured at the OS layer.
- TapLocation
- Where in the event stream a tap is inserted (macOS
CGEventTapLocation).
Constants§
- LOGITECH_
VENDOR_ ID - Logitech’s USB/Bluetooth vendor id (
0x046D).
Functions§
- frontmost_
bundle_ id - Return an opaque string identifying the currently frontmost application.
- source_
is_ remappable - Whether the OS hook may suppress/remap a button event from this source.