tauri_hotkey_sys/
traits.rs1use 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}