pub struct HotkeyManager { /* private fields */ }Expand description
The main entry point — manages the engine thread and hotkey registration. Public manager API.
Implementations§
Source§impl HotkeyManager
impl HotkeyManager
Sourcepub fn new() -> Result<Self, Error>
pub fn new() -> Result<Self, Error>
Create a manager with backend auto-detection.
§Errors
Returns an error if the backend cannot be initialized or input devices are not accessible.
Sourcepub fn builder() -> HotkeyManagerBuilder
pub fn builder() -> HotkeyManagerBuilder
Configure manager startup options.
Sourcepub const fn active_backend(&self) -> Backend
pub const fn active_backend(&self) -> Backend
Returns the backend this manager is using.
Sourcepub fn register<F>(
&self,
hotkey: impl Into<Hotkey>,
callback: F,
) -> Result<BindingGuard, Error>
pub fn register<F>( &self, hotkey: impl Into<Hotkey>, callback: F, ) -> Result<BindingGuard, Error>
Register a simple hotkey callback.
§Errors
Returns Error::AlreadyRegistered if the hotkey is already bound,
or Error::ManagerStopped if the engine has shut down.
Sourcepub fn register_with_options(
&self,
hotkey: impl Into<Hotkey>,
action: impl Into<Action>,
options: BindingOptions,
) -> Result<BindingGuard, Error>
pub fn register_with_options( &self, hotkey: impl Into<Hotkey>, action: impl Into<Action>, options: BindingOptions, ) -> Result<BindingGuard, Error>
Register a hotkey with an explicit action and binding options.
Use when you need metadata (description, overlay visibility) or
behavioral options beyond what register() provides.
§Errors
Returns Error::AlreadyRegistered if the hotkey is already bound,
or Error::ManagerStopped if the engine has shut down.
Sourcepub fn is_registered(&self, hotkey: impl Into<Hotkey>) -> Result<bool, Error>
pub fn is_registered(&self, hotkey: impl Into<Hotkey>) -> Result<bool, Error>
Query whether a hotkey is currently registered.
§Errors
Returns Error::ManagerStopped if the engine has shut down.
Sourcepub fn is_key_pressed(&self, key: Key) -> Result<bool, Error>
pub fn is_key_pressed(&self, key: Key) -> Result<bool, Error>
Query whether a specific key is currently pressed on any device.
§Errors
Returns Error::ManagerStopped if the engine has shut down.
Sourcepub fn active_modifiers(&self) -> Result<Vec<Modifier>, Error>
pub fn active_modifiers(&self) -> Result<Vec<Modifier>, Error>
Query the set of modifiers currently held, derived from key state.
Left/right variants are canonicalized: if either LeftCtrl or RightCtrl
is held, Modifier::Ctrl is in the returned set.
§Errors
Returns Error::ManagerStopped if the engine has shut down.
Sourcepub fn define_layer(&self, layer: Layer) -> Result<(), Error>
pub fn define_layer(&self, layer: Layer) -> Result<(), Error>
Define a named layer.
Sends the layer definition to the engine for storage. The layer
is not active until explicitly pushed via push_layer().
§Errors
Returns Error::LayerAlreadyDefined if a layer with the same
name has already been defined, or Error::ManagerStopped if
the engine has shut down.
Sourcepub fn shutdown(self) -> Result<(), Error>
pub fn shutdown(self) -> Result<(), Error>
Stop the manager and join the engine thread.
All registered bindings are dropped. This is also called automatically when the manager is dropped.
§Errors
Returns Error::EngineError if the engine thread panicked.
Sourcepub fn push_layer(&self, name: impl Into<LayerName>) -> Result<(), Error>
pub fn push_layer(&self, name: impl Into<LayerName>) -> Result<(), Error>
Push a named layer onto the layer stack.
The layer must have been previously defined via define_layer.
The pushed layer becomes the highest-priority layer for matching.
§Errors
Returns Error::LayerNotDefined if no layer with the given name exists,
or Error::ManagerStopped if the engine has shut down.
Sourcepub fn pop_layer(&self) -> Result<LayerName, Error>
pub fn pop_layer(&self) -> Result<LayerName, Error>
Pop the topmost layer from the layer stack.
Returns the name of the popped layer.
§Errors
Returns Error::EmptyLayerStack if no layers are active,
or Error::ManagerStopped if the engine has shut down.
Sourcepub fn toggle_layer(&self, name: impl Into<LayerName>) -> Result<(), Error>
pub fn toggle_layer(&self, name: impl Into<LayerName>) -> Result<(), Error>
Toggle a named layer on or off.
If the layer is currently in the stack, it is removed. If the layer is not in the stack, it is pushed.
§Errors
Returns Error::LayerNotDefined if no layer with the given name exists,
or Error::ManagerStopped if the engine has shut down.
Sourcepub fn list_bindings(&self) -> Result<Vec<BindingInfo>, Error>
pub fn list_bindings(&self) -> Result<Vec<BindingInfo>, Error>
List all registered bindings with current shadowed status.
Returns global bindings and all layer bindings (active or not). Each entry includes whether the binding is currently reachable or shadowed by a higher-priority layer.
§Errors
Returns Error::ManagerStopped if the engine has shut down.
Sourcepub fn bindings_for_key(
&self,
hotkey: impl Into<Hotkey>,
) -> Result<Option<BindingInfo>, Error>
pub fn bindings_for_key( &self, hotkey: impl Into<Hotkey>, ) -> Result<Option<BindingInfo>, Error>
Query what would fire if the given hotkey were pressed now.
Considers the current layer stack. Returns None if no binding
matches the hotkey.
§Errors
Returns Error::ManagerStopped if the engine has shut down.
Sourcepub fn active_layers(&self) -> Result<Vec<ActiveLayerInfo>, Error>
pub fn active_layers(&self) -> Result<Vec<ActiveLayerInfo>, Error>
Query the current layer stack.
Returns layers in stack order (bottom to top).
§Errors
Returns Error::ManagerStopped if the engine has shut down.
Sourcepub fn conflicts(&self) -> Result<Vec<ConflictInfo>, Error>
pub fn conflicts(&self) -> Result<Vec<ConflictInfo>, Error>
Find bindings that are shadowed by higher-priority layers.
Returns conflict pairs: each entry shows the shadowed binding and the binding that shadows it.
§Errors
Returns Error::ManagerStopped if the engine has shut down.
Trait Implementations§
Source§impl Debug for HotkeyManager
impl Debug for HotkeyManager
Auto Trait Implementations§
impl !Freeze for HotkeyManager
impl RefUnwindSafe for HotkeyManager
impl Send for HotkeyManager
impl Sync for HotkeyManager
impl Unpin for HotkeyManager
impl UnsafeUnpin for HotkeyManager
impl UnwindSafe for HotkeyManager
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> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.