Tauri 2.0.0-rc 安装全局快捷方式插件

Tauri 2.0.0-rc 安装全局快捷方式插件

Tauri 2.0.0-rc 引入了全局快捷方式插件允许你在你的应用中注册全局快捷方式,并在用户按下这些快捷方式时触发 JavaScript 回调。

首先,你需要在你的 Rust 项目中安装全局快捷方式插件。

  1. Cargo.toml 文件中添加依赖。
tauri-plugin-global-shortcut = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
  1. 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");
}
  1. 安装 JavaScript Guest 绑定。

    pnpm add @tauri-apps/plugin-global-shortcut

  2. 使用 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')
})
  1. 使用 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值