Tauri 2.0.0-rc 安装全局快捷方式插件
Tauri 2.0.0-rc 引入了全局快捷方式插件允许你在你的应用中注册全局快捷方式,并在用户按下这些快捷方式时触发 JavaScript 回调。
首先,你需要在你的 Rust 项目中安装全局快捷方式插件。
- 在
Cargo.toml
文件中添加依赖。
tomltauri-plugin-global-shortcut = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
- 在
lib.rs
文件中初始化插件。
rustfn run() { tauri::Builder::default() .plugin(tauri_plugin_global_shortcut::Builder::new().build()) .run(tauri::generate_context!()) .expect("error while running tauri application"); }
- 安装 JavaScript Guest 绑定。
pnpm add @tauri-apps/plugin-global-shortcut
- 使用 JavaScript API 注册快捷方式。
javascriptimport { register } from '@tauri-apps/plugin-global-shortcut' await register('CommandOrControl+Shift+C', (event) => { // event.state === 'Pressed' 键盘按下状态 // event.state === 'Released' 键盘松开状态 console.log('Shortcut triggered') })
- 使用 rust 代码注册快捷方式
推荐使用这个
这样刷新页面的时候,就不用重新注册快捷键了。
rustfn main() { tauri::Builder::default() .setup(|app| { #[cfg(desktop)] { use tauri::Manager; use tauri_plugin_global_shortcut::{Code, Modifiers, ShortcutState}; app.handle().plugin( tauri_plugin_global_shortcut::Builder::new() .with_shortcuts(["ctrl+d", "alt+space"])? .with_handler(|app, shortcut, event| { if event.state == ShortcutState::Pressed { if shortcut.matches(Modifiers::CONTROL, Code::KeyD) { let _ = app.emit("shortcut-event", "Ctrl+D triggered"); } if shortcut.matches(Modifiers::ALT, Code::Space) { let _ = app.emit("shortcut-event", "Alt+Space triggered"); } } }) .build(), )?; } Ok(()) }) .run(tauri::generate_context!()) .expect("error while running tauri application"); }
- 在 js 中可以使用 listen 来进行监听快捷键事件
javascript// 键盘事件 import { listen } from '@tauri-apps/api/event' // 监听 'shortcut-event' 事件 listen('shortcut-event', (event) => { console.log(event.payload) // 打印事件的负载,例如 "Ctrl+D triggered" })
注意事项
默认情况下,所有插件命令都被阻止,无法访问。你必须在 permissions
配置中定义一个权限列表。
json{ "permissions": ["global-shortcut:allow-is-registered", "global-shortcut:allow-register", "global-shortcut:allow-unregister"] }
还有一个比较重要的注意事项,当你程序页面使用了刷新,这个注册的快捷键失效了,需要先清除缓存,然后重新注册快捷键才行.
- 参考文献:
https://v2.tauri.app/zh-cn/plugin/global-shortcut/
https://github.com/tauri-apps/tauri-plugin-global-shortcut