electron globalShortcut 快捷键与系统全局快捷键冲突

2023-11-15

electron 开发自己的接口测试工具(Post Tools),在设置了 globalShortcut 快捷键后,发现应用中的快捷键与系统全局快捷键冲突了,导致系统快捷键不可正常使用。

electron globalShortcut

快捷键配置

export function initGlobalShortcut(mainWindow) {
  globalShortcut.register('CommandOrControl+shift+r', () => {
    app.relaunch()
    app.exit()
  })
  globalShortcut.register('CommandOrControl+shift+delete', () => {
    resetLocalData()
  })
  globalShortcut.register('F1', () => {
    shell.openExternal('https://tiven.cn/p/4dc21784/')
  })
  globalShortcut.register('F2', () => {
    shell.openExternal('https://tiven.cn/service/tools/post-tool')
  })
  globalShortcut.register('F5', () => {
    mainWindow?.reload()
  })
  globalShortcut.register('CommandOrControl+r', () => {
    mainWindow?.reload()
  })
  globalShortcut.register('CommandOrControl+q', () => {
    app.exit()
  })
  globalShortcut.register('CommandOrControl+w', () => {
    mainWindow?.hide()
    mainWindow?.setSkipTaskbar(true)
  })
  globalShortcut.register('F11', () => {
    // 是否全屏
    if (mainWindow?.isFullScreen()) {
      // mainWindow?.minimize();
      mainWindow?.setFullScreen(false)
      mainWindow?.setMenuBarVisibility(true)
    } else {
      mainWindow?.setFullScreen(true)
      mainWindow?.setMenuBarVisibility(false)
    }
  })
  globalShortcut.register('Esc', () => {
    // 是否全屏
    if (mainWindow?.isFullScreen()) {
      // mainWindow?.minimize();
      mainWindow?.setFullScreen(false)
      mainWindow?.setMenuBarVisibility(true)
    }
  })
  globalShortcut.register('CommandOrControl+F12', () => {
    mainWindow?.webContents.openDevTools({ mode: 'detach' })
  })
}

解决冲突

一般来说会在 mainWindow ready-to-show 的时候初始化快捷键,当然也可以在应用失去焦点(blur)的时候主动应用的注销快捷键,以避免和系统快捷键冲突。


  mainWindow.on('ready-to-show', () => {
    mainWindow.show()
    // 注册全局快捷键
    initGlobalShortcut(mainWindow)
  })

  mainWindow.on('blur', () => {
    // 失去焦点,注销快捷键
    globalShortcut.unregisterAll()
  })


欢迎访问:天问博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

electron globalShortcut 快捷键与系统全局快捷键冲突 的相关文章

随机推荐

  • 小波滤波器与其他滤波器的区别_视界,输入滤波器常见的问题以及解决方法

    随着信息时代的进步与发展 输入滤波器应用范围也得到了广泛应用 它适用于数据处理系统 电信系统 电源 电梯行业 变频器及电源净化等需要强干扰抑制器设备中 在选择该产品的时候难免会遇到一些问题 下面是小编整理的有关输入滤波器的常见问题 以及处理
  • 题目 1162: 密码

    网上流传一句话 常在网上飘啊 哪能不挨刀啊 其实要想能安安心心地上网其实也不难 学点安全知识就可以 首先 我们就要设置一个安全的密码 那什么样的密码才叫安全的呢 一般来说一个比较安全的密码至少应该满足下面两个条件 1 密码长度大于等于8 且
  • SpringCloud Netflix Hystrix

    文章目录 一 Hystrix简介 1 什么是灾难性雪崩效应 2 什么是Hystrix 二 服务降级 Ribbon中 三 服务熔断 Ribbon中 服务降级的强化版 四 请求缓存 Ribbon中 不推荐 查询频率高 修改频率低时谨慎使用 五
  • syncthing数据同步应用-docker部署

    syncthing应用场景类似于rsync 在数据传输通道的两端都部署服务 再通过密钥验证的方式完成最终数据同步 而syncthing较之更加简单 因配备了Web UI 配置上难度降低了不少 相关资料 https syncthing net
  • go语言命令行库的安装与使用 -- cobra

    文章目录 前言 一 go env的配置 镜像源的设置 GOPROXY 二 cobra的安装与cobra cli的安装 1 cobra的安装 1 测试是否安装成功 2 cobra cli的安装 cobra cli的使用 前言 看了许多cobr
  • Vue3.0+ts—watch使用

    引入Vue的对象 ref reactive watch ref 用来声明响应式的基础类型的变量 reactive用来声明响应式的对象类型的变量 watch 引入watch对象 以便调用 import ref reactive watch f
  • 若依框架添加页面步骤

    本文代码使用的是ruoyi分离版 http doc ruoyi vip ruoyi vue 一 导入表 1 1查看数据库表 1 2使用后台代码生成模块 二 编辑表信息 若依框架前后端分离版本自动生成代码的详细步骤 1 若依框架的下载和本地运
  • Java Web-servlet技术-通过表单向servlet提交数据

    通过表单向servlet提交数据 1 创建名为ComputeBill的servlet文件 2 重写init 和service package myservlet import java io IOException import java
  • 游戏服务器维护请更换服务器,更换游戏服务器

    更换游戏服务器 内容精选 换一换 支持 您可以先将弹性公网IP从原弹性云服务器解绑 如何解绑请参考解绑定和释放弹性公网IP 再将弹性公网IP绑定到目标弹性云服务器 如何绑定请参考绑定云资源 相关操作 为弹性云服务器更换绑定的弹性公网IP 请
  • Tomcat官网地址

    Tomcat官网地址 https tomcat apache org https tomcat apache org
  • 《再也不怕elasticsearch》es聚合使用与原理剖析

    大家好我是迷途 一个在互联网行业 摸爬滚打的学子 热爱学习 热爱代码 热爱技术 热爱互联网的一切 再也不怕elasticsearch系列 帅途会慢慢由浅入深 为大家剖析一遍 各位大佬请放心 虽然这个系列帅途有时候更新的有点慢 但是绝对不会烂
  • 去除 Zotero + Obsidian 复制粘贴参考文献表时的多余空行(ctrl+shift+C)

    前言 最近在用 Zotero 做文献管理 用 Obsidian 记笔记 但是使用的时候 有一个问题不大 但是有时候很烦人的情况 粘贴参考文献格式 在粘贴的时候总会莫名多出来几个空行 需要手动删除 举个例子 下面是某个文献库 我希望将第一篇文
  • 广告营销用户点击预测分析

    广告营销用户点击预测分析 零 数据集以及数据集简介以及任务分析 一 数据预处理 1 加载检查数据 1 特殊特征 2 特殊特征的处理 3 特殊特征处理后生成的新特征 2 数据类型与缺失值处理 1 查看数据信息 2 数据补全以及类型转换 3 补
  • 为什么 Thread 类的 sleep() 和 yield () 方法是静态方法?(详解)

    首先明确一点 在一个线程拿到锁的时候 其他线程向拿到锁就必须要等待 author FanQie date 2022 7 30 10 43 public class SleepYield private static Object resou
  • docker 运行pytorch 程序报错---ERROR: Unexpected bus error encountered in worker.

    1 错误 ERROR Unexpected bus error encountered in worker This might be caused by insufficient shared memory shm 2 原因 Pytorc
  • springboot项目部署云服务器,SpringBoot项目的云服务器部署

    1 场景还原 springboot配置相当简单 人人皆知 怎么把springboot工程部署到云服务器上呢 可能有人会说 博主你前篇不是讲了java工程的云部署把 但是我想澄清一点的是 我前篇的工程都是ssm框架搭建的 而springboo
  • 20个免费视频素材平台推荐

    视频剪辑大神的视频素材是从哪里找的 视频素材不知道去哪里找 那可以看看本文 本文总结了素材的方方面面 包括图片 图标以及视频音频的素材网站整理 再也无需为视频素材烦恼 1 新CG儿 一个特别良心的素材网站 模板和视频都非常丰富 重要的是基本
  • 蓝桥杯精选赛题算法系列——迷宫——DFS

    已收录此专栏 今天我们会全面学习 DFS 的相关知识 包括理论 模板 真题等 深度优先搜索 DFS Depth First Search 和宽度优先搜索 BFS Breadth First Search 或称为广度优先搜索 是基本的暴力技术
  • Apache Flink不止于计算,数仓架构或兴起新一轮变革

    2021 年初 在 InfoQ 编辑部策划的全年技术趋势展望中 我们提到大数据领域将加速拥抱 融合 或 一体化 演进的新方向 本质是为了降低大数据分析的技术复杂度和成本 同时满足对性能和易用性的更高要求 如今 我们看到流行的流处理引擎 Ap
  • electron globalShortcut 快捷键与系统全局快捷键冲突

    用 electron 开发自己的接口测试工具 Post Tools 在设置了 globalShortcut 快捷键后 发现应用中的快捷键与系统全局快捷键冲突了 导致系统快捷键不可正常使用 快捷键配置 export function init