tauri_hotkey_sys/
traits.rs

1use thiserror::Error;
2
3pub type ListenerCallback = dyn 'static + FnMut() + Send;
4
5#[derive(Debug, PartialEq, Eq, Copy, Clone)]
6pub struct ListenerHotkey {
7  pub modifiers: u32,
8  pub key: u32,
9}
10
11impl ListenerHotkey {
12  pub fn new(modifiers: u32, key: u32) -> Self {
13    Self { modifiers, key }
14  }
15}
16
17pub trait HotkeyListener {
18  fn new() -> Self;
19  fn register_hotkey<F>(&mut self, hotkey: ListenerHotkey, callback: F) -> Result<(), HotkeyError>
20  where
21    F: 'static + FnMut() + Send;
22  fn unregister_hotkey(&mut self, hotkey: ListenerHotkey) -> Result<(), HotkeyError>;
23  fn registered_hotkeys(&self) -> Vec<ListenerHotkey>;
24}
25
26#[derive(Error, Debug, PartialEq, Eq)]
27pub enum HotkeyError {
28  #[error("channel error")]
29  ChannelError(),
30  #[error("hotkey already registered: `{0:?}`")]
31  HotkeyAlreadyRegistered(ListenerHotkey),
32  #[error("hotkey not registered: `{0:?}`")]
33  HotkeyNotRegistered(ListenerHotkey),
34  #[error("backend api error: `{0}`")]
35  BackendApiError(usize),
36  #[error("unknown error")]
37  Unknown,
38}