๐Ÿ“ฆ tauri-apps / global-hotkey

Global hotkeys for Desktop Applications.

โ˜… 236 stars โ‘‚ 31 forks ๐Ÿ‘ 236 watching โš–๏ธ Apache License 2.0
global-hotkeysguihotkeysrustwindowing
๐Ÿ“ฅ Clone https://github.com/tauri-apps/global-hotkey.git
HTTPS git clone https://github.com/tauri-apps/global-hotkey.git
SSH git clone git@github.com:tauri-apps/global-hotkey.git
CLI gh repo clone tauri-apps/global-hotkey
Sergio Alejandro Ribera Costa Sergio Alejandro Ribera Costa chore: Update minimum supported Rust version to 1.77 (#165) d706220 2 months ago ๐Ÿ“ History
๐Ÿ“‚ dev View all commits โ†’
๐Ÿ“ .changes
๐Ÿ“ .github
๐Ÿ“ examples
๐Ÿ“ src
๐Ÿ“„ .gitignore
๐Ÿ“„ Cargo.lock
๐Ÿ“„ Cargo.toml
๐Ÿ“„ CHANGELOG.md
๐Ÿ“„ LICENSE-APACHE
๐Ÿ“„ LICENSE-MIT
๐Ÿ“„ LICENSE.spdx
๐Ÿ“„ README.md
๐Ÿ“„ renovate.json
๐Ÿ“„ README.md

global_hotkey lets you register Global HotKeys for Desktop Applications.

Platforms-supported:

  • Windows
  • macOS
  • Linux (X11 Only)

Platform-specific notes:

  • On Windows a win32 event loop must be running on the thread. It doesn't need to be the main thread but you have to create the global hotkey manager on the same thread as the event loop.
  • On macOS, an event loop must be running on the main thread so you also need to create the global hotkey manager on the main thread.

Example

use global_hotkey::{GlobalHotKeyManager, hotkey::{HotKey, Modifiers, Code}};

// initialize the hotkeys manager
let manager = GlobalHotKeyManager::new().unwrap();

// construct the hotkey
let hotkey = HotKey::new(Some(Modifiers::SHIFT), Code::KeyD);

// register it
manager.register(hotkey);

Processing global hotkey events

You can also listen for the menu events using GlobalHotKeyEvent::receiver to get events for the hotkey pressed events.

use global_hotkey::GlobalHotKeyEvent;

if let Ok(event) = GlobalHotKeyEvent::receiver().try_recv() {
    println!("{:?}", event);
}

License

Apache-2.0/MIT