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 快捷键与系统全局快捷键冲突 的相关文章

  • Electron:如何安全地将全局变量注入BrowserWindow / BrowserView?

    我想使用 Electron 加载外部网页BrowserView 它的 API 几乎与BrowserWindow const currentWindow remote getCurrentWindow const view new remot
  • 与 Electron 相比,Chrome 应用程序有哪些优缺点?

    我想用 javascript 使用网络技术 编写一个桌面应用程序 并寻找 Electron 和 Chrome 应用程序之间的比较 我需要的一切似乎都可以通过 Chrome Apps 实现 但是 Electron NW js 周围有很大的宣传
  • Electron 是针对不同的 Node.js 版本编译的

    我正在构建一个预计在 Ubuntu 20 xx Linux 和 Raspberry Pi 运行 Raspbian 和 arch armv7l 上运行的 Electron 应用程序 但收到以下错误 was compiled against a
  • ContentSecurityPolicy 防止 Electron 中的获取请求

    我正在尝试构建一个发出 api 请求的电子应用程序 但是当我进行 api 调用时 出现以下错误 拒绝连接到 因为它违反了以下内容安全策略指令 default src self unsafe inline data 请注意 connect s
  • React 远程控制台日志记录

    我使用 Mongo 设置了 Express 服务器 以便在使用 React 对 Electron 应用程序进行调试测试期间记录控制台日志 我只是使用 ajax 发送通常使用 console log 打印的内容 这对于我想要记录的单个事件效果
  • Electron 中渲染器和主进程的区别

    我最初认为 Electron 中的渲染器进程是在类似 chrome 的环境中沙箱化的 这意味着你所能做的就是弄乱 DOM 但是 我最近了解到您可以访问文件系统 运行子进程并获取其输出 以及导入您想要的任何其他节点模块 如果是这样的话 主进程
  • 未捕获的 EvalError:拒绝将字符串评估为 JavaScript,因为“unsafe-eval”不是内容安全 Pol 中允许的脚本源

    Electron React TypeScript 应用程序的内容安全策略是什么 我什至没有使用 unsafe eval 但出现错误 以下是我尝试过并收到上述错误消息的一些内容安全策略 gt gt 您收到此错误是因为您正在尝试执行以下操作u
  • setInterval 使用 Electron 一小时后停止

    希望有人能在这里指出我正确的方向 我的电子应用程序需要每 10 分钟左右执行一次 API 调用 目前 我在渲染器进程中使用 setInterval 循环来执行此操作 该循环每 10 分钟触发一次 它通常工作得很好 几个小时后似乎就停止了 我
  • electro-forge如何指定打包的源目录?

    我已经操纵了创建反应应用程序与电子锻造app 现在我需要以某种方式指定从 CRA 生成的构建文件夹用于打包 该文件夹也应该被提供 电子锻造可以实现这样的事情吗 我知道您是在问如何告诉 electro forge 在哪个目录中找到源文件来打包
  • 类型错误:不是构造函数

    我只是将代码用作有关 JavaScript 类的学习练习 该代码产生 TypeError SimpleLogger 不是构造函数 该类似乎已导出 但我无法在 main js 文件中实例化它 我已经减少了代码以仅显示问题 我想知道是否有人能发
  • 节点模块是针对不同的节点模块编译的 67

    我有一个在节点模块版本 67 下编译的节点项目 但现在我收到一个错误 它需要节点模块版本 69 usb bindings node was compiled against a different Node js version using
  • 无法启动 Electron 应用程序 - 缺少 package.json

    我目前正在做一个 Python 项目 我想在 Electron 应用程序中显示我的结果 我在 YouTube 上看过一个关于如何在 Mac 上设置 Electron 的演示视频 该视频展示了在终端中执行的 3 个简单步骤 git clone
  • 在电子中创建多个预加载文件(每页一个)

    我正在创建我的第一个 Electron 应用程序 并且完成了表单的第一页 现在这个应用程序不是 SPA 所以我有大约 3 4 个不同的页面 并且页面通向另一个页面 为了允许正确的代码组织 我想为每个面向客户端的页面保留一个单独的预加载文件
  • CSS“ch”单元的意外行为

    我正在使用ch用于指定宽度的 CSS 单位div包含文本 我使用的是等宽字体 但是 如果我设置width 80ch 我第一个得到 80 个字符n行 其中n始终是 24 不确定这是否重要 但从那时起只有 79 个字符 这如下面的屏幕截图所示
  • 处理来自 Electron (或其他桌面平台)的 oauth2 重定向

    这主要是缺乏对 oauth2 的理解 并且可能不是特定于 Electron 的 但是我试图理解某人如何处理来自桌面平台 如 Electron 的 oauth2 重定向 url 假设应用程序中没有 Web 服务设置 桌面应用程序如何提示用户输
  • electronics-react-boilerplate:单击按钮时的子窗口

    我怀疑如何将reactjs文件加载到新窗口中 单击电子反应样板中的按钮 const handleVideoCall gt const remote require electron remote const BrowserWindow re
  • 如何在 Electron 桌面应用程序中使用 Google 登录?

    我正在使用 Node js 和 Express 制作一个简单的应用程序 它严重依赖 Google 登录来获取个人资料图片和昵称 当在新的 Electron 应用程序中测试它时 我遇到了错误 此浏览器或应用程序可能不安全 尝试使用不同的浏览器
  • 警告:“沙箱”不在已知选项列表中,但仍传递给 Electron/Chromium

    我在用Linux Mint 20 and vscode 1 52 1 My xsession errors文件显示Warning sandbox is not in the list of known options but still p
  • 无法通过电子应用程序在discordjs上发送附加到消息的图像

    我正在尝试为我使用discordjs 编写的discord 机器人构建图形界面 但是 我在发送图像时遇到了问题 这是我的代码中负责向用户发送消息的部分 utilsateur createDM then channeltemp gt let
  • Electron — 无法显示自定义图标

    我在以两种不同的方式设置 Electron 应用程序的图标时遇到问题 非打包 通过终端运行应用程序 我的 main js 确实指定了一个 图标 值 指向图标文件 但它不适用 包装 使用电子包装器 我的 package json 文件指定了

随机推荐

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

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