Tauri 2.0.0-rc 安装全局快捷方式插件
Tauri 2.0.0-rc 引入了全局快捷方式插件允许你在你的应用中注册全局快捷方式,并在用户按下这些快捷方式时触发 JavaScript 回调。
首先,你需要在你的 Rust 项目中安装全局快捷方式插件。
- 在
Cargo.toml
文件中添加依赖。
tauri-plugin-global-shortcut = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
- 在
lib.rs
文件中初始化插件。
fn 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 注册快捷方式。
import { register } from '@tauri-apps/plugin-global-shortcut'
await register('CommandOrControl+Shift+C', (event) => {
// event.state === 'Pressed' 键盘按下状态
// event.state === 'Released' 键盘松开状态
console.log('Shortcut triggered')
})
- 使用 rust 代码注册快捷方式
推荐使用这个
这样刷新页面的时候,就不用重新注册快捷键了。
fn 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 来进行监听快捷键事件
// 键盘事件
import { listen } from '@tauri-apps/api/event'
// 监听 'shortcut-event' 事件
listen('shortcut-event', (event) => {
console.log(event.payload) // 打印事件的负载,例如 "Ctrl+D triggered"
})
注意事项
默认情况下,所有插件命令都被阻止,无法访问。你必须在 permissions
配置中定义一个权限列表。
{
"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