iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Electron快捷键使用技巧有哪些
  • 671
分享到

Electron快捷键使用技巧有哪些

2023-07-05 16:07:26 671人浏览 薄情痞子
摘要

这篇文章主要介绍“Electron快捷键使用技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Electron快捷键使用技巧有哪些”文章能帮助大家解决问题。引言Electron 中可以设置全局

这篇文章主要介绍“Electron快捷键使用技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Electron快捷键使用技巧有哪些”文章能帮助大家解决问题。

    引言

    Electron 中可以设置全局快捷键和应用快捷键,全局快捷键就是注册到系统里面的,全局生效的快捷键;而应用快捷键是指当用户使用该应用程序时才生效的快捷键,它们的实现逻辑是不一样的。

    全局快捷键

    Electron 提供的 globalShortcut 模块可以用于注册或取消全局快捷键。使用方法为:

    globalShortcut.reGISter(accelerator, callback) // 注册单个快捷键globalShortcut.registerAll(accelerators, callback) // 批量注册快捷键

    其中参数的含义

    • accelerator 必须是有效的快捷键字符串

    • callback 是当注册成功后,用户按下快捷键之后执行的回调函数

    有效的快捷键由多个功能键和一个键码中间用加号(+)组合而成,例如:

    • Ctrl + T

    • CmdOrCtrl + Shift + Z

    常用的功能键和键码如下,设置快捷键的时候可以从功能键里面选择多个,从键码里面选择一个:

    功能键Cmd、Ctrl、CmdOrCtrl、Alt、Shift、Meta
    键码0~9、A~Z、F1~F24、Space、Tab、Backspace、Delete、Enter、Esc 等

    不过有两点需要注意:

    • 如果快捷键字符串无效会直接报错,因此建议在使用此方法的时候加 try catch 语句,防止程序崩溃。

    • 该方法并不确保一定可以成功注册全局快捷键,因为有可能被电脑上的其他应用提前占用了,此时并不会报错,而是返回 false,因此我们可以通过返回值来判断快捷键是否注册成功。

    示例代码

    const { app, globalShortcut } = require('electron')app.whenReady().then(() => {  registerGlobalShortcut('Cmd+Alt+K')})function registerGlobalShortcut(shortcut) {  if (!shortcut) return false  let flag = false  try {    flag = globalShortcut.isRegistered(shortcut)    if (flag) return true    flag = globalShortcut.register(shortcut, () => {      console.log('toggle shortcut')    })  } catch (e) {    console.error(e)  }  return flag}

    注意 globalShortcut 的 api 需要在 app ready 之后才能调用,否则会直接退出:

    Electron.app/Contents/MacOS/Electron exited with signal SIGTRAP

    代码中有一行判断快捷键是否被注册的函数:

    globalShortcut.isRegistered(accelerator)

    该方法只能检测当前应用是否注册过这个快捷键,并不能检测到快键键是否被其他应用占用,即使被其他应用注册过了,该方法依然会返回 false,只有当前应用成功注册了这个全局快捷键,才会返回 true。

    可以使用一些开源工具来检测快捷键是否被占用,例如 windows 系统上的 OpenArk ,Mac 上的 Shortcut Detective。

    取消快捷键注册的方法:

    globalShortcut.unregister(accelerator) // 取消注册指定快捷键globalShortcut.unregisterAll() // 取消注册所有快捷键

    应用快捷键

    与全局快捷键不同,窗口快捷键是当窗口处于激活状态时,按下按键之后触发的行为。例如我们打开 Word 或 photoshop 软件,可以用 ctrl + z 撤销上一步操作,用 ctrl + c 复制等。下图是 vscode 的菜单和对应的快捷键:

    Electron快捷键使用技巧有哪些

    在 Electron 应用中,也提供了对应的功能,在创建菜单(Menu)的时候,可以指定窗口快键键,示例代码如下:

    const { app, BrowserWindow, Menu } = require('electron')app.whenReady().then(() => {  createWindow()})let winfunction createWindow() {  win = new BrowserWindow({    width: 600,    height: 400,  })  const tpl = [    {      label: '自定义菜单',      submenu: [        {          label: '打开控制台',          role: 'toggleDevTools',        },        {          label: '绑定快捷键',          accelerator: 'Ctrl+Shift+K',          click: () => {            console.log('menu shortcut pressed')          },        },      ],    },  ]  if (process.platfORM === 'darwin') {    tpl.unshift({ label: '' })  }  const menu = Menu.buildFromTemplate(tpl)  Menu.setApplicationMenu(menu)}

    最终的效果是:系统菜单项绑定了快捷键,如下图所示:

    Electron快捷键使用技巧有哪些

    当应用处于激活状态时,如果用户触发了 Ctrl+Shift+K 快捷键,会执行回调函数,打印相关信息:

    Electron快捷键使用技巧有哪些

    再次强调,一定要在打开当前应用后触发快捷键才行,如果在别的应用中触发这个快捷键是没有效果的,正如官方文档中说的:

    Electron快捷键使用技巧有哪些

    其实每个桌面软件都有注册了自己的「应用快捷键」,例如 ctrl+cctrl+v 这种通用的都属于应用快捷键。在 Windows 系统上,还可以为每个窗口设置不同的快捷键。例如,你可以在一个窗口中设置 Ctrl+O 快捷键打开文件,在另一个窗口中设置 Ctrl+S 快捷键保存文件。

    开发的时候,可能会想做这样的事情:注册一个不在菜单中显示的应用快捷键便于调试(例如打开控制台或者上传日志等),那有没有办法能够做到不注册菜单,只注册快捷键呢?有两种方案:

    方法1:把菜单给隐藏掉

    MenuItem 有个 visibile 属性用于设置菜单项是否展示,默认是 true,设置成 false 即可,不过 2015 年的一个 issue 说,在 macOS 系统上如果隐藏菜单,快捷键就失效了,但是经过笔者实际测试,发现并没有失效(macOS 12.6.3 系统),所以这种方法是可行的,而且非常简单,只需要修改一行代码即可:

    const tpl = [  {    label: '自定义菜单',    submenu: [      {        label: '打开控制台',        role: 'toggleDevTools',      },      {        label: '绑定快捷键',        accelerator: 'Ctrl+Shift+K',        visible: false, // 设置菜单项为隐藏菜单        click: () => {          console.log('menu shortcut pressed')        },      },    ],  },]

    方法2:利用 WEBContents.on('before-input-event') 事件

    具体的内容可参见这个 issue,利用的是 webContents 的 before-input-event 事件。示例代码如下:

    app.on('web-contents-created', function (event, wc) {  wc.on('before-input-event', function (event, input) {    if (input.key === 'x' && input.ctrl && !input.alt && !input.meta && !input.shift) {      // Do something for Ctrl-X      event.preventDefault()    }  })})

    社区有开发者基于此封装了 electron-localshortcut 包,可以非常方便的给不同的窗口(BrowserWindow)绑定快捷键,使用起来更简单:

    const { app, BrowserWindow } = require('electron')const localShortcut = require('electron-localshortcut')app.whenReady().then(() => createWindow())let win1, win2function createWindow() {  win1 = new BrowserWindow({ width: 600, height: 400 })  win1.loadURL('https://www.baidu.com')  localShortcut.register(win1, 'Ctrl+Shift+K', () => {    console.log('register local shortcut for win1')  })  win2 = new BrowserWindow({ width: 600, height: 400 })  win2.loadURL('Https://www.taobao.com')  localShortcut.register(win2, 'Ctrl+Shift+T', () => {    console.log('register local shortcut for win2')  })}

    关于“Electron快捷键使用技巧有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: Electron快捷键使用技巧有哪些

    本文链接: https://www.lsjlt.com/news/353444.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Electron快捷键使用技巧有哪些
      这篇文章主要介绍“Electron快捷键使用技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Electron快捷键使用技巧有哪些”文章能帮助大家解决问题。引言Electron 中可以设置全局...
      99+
      2023-07-05
    • python实用的快捷语法技巧有哪些
      本篇内容主要讲解“python实用的快捷语法技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python实用的快捷语法技巧有哪些”吧!前言你知道a**3是什么意思吗?你知道怎么打印模块路...
      99+
      2023-06-29
    • Dreamweaver快捷键有哪些
      这篇文章主要介绍Dreamweaver快捷键有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!新建文档        Ctrl+N  打开一个 HTML文件   Ctrl+O或者将文件从[文件管理器]或[站点]窗口...
      99+
      2023-06-08
    • Bash快捷键有哪些
      这篇文章给大家分享的是有关Bash快捷键有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ALT 快捷键ALT+A – 光标移动到行首。ALT+B – 光标移动到所在单词...
      99+
      2023-06-16
    • idea有哪些快捷键
      这篇文章主要讲解了“idea有哪些快捷键”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“idea有哪些快捷键”吧!idea快捷键有:Ctrl+F、Ctrl+R、Ctrl+Z、Ctrl+Y、Ct...
      99+
      2023-06-20
    • win10快捷键有哪些
      这篇文章主要介绍“win10快捷键有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10快捷键有哪些”文章能帮助大家解决问题。Windows 10 快捷键具体描述:1 Windows 键 打...
      99+
      2023-06-27
    • centos7快捷键有哪些
      centos7中常用的快捷键有:1.Ctrl + c,取消当前操作;2.Tab,获取提示;3.Ctrl + d,退出系统登录;4.ctrl + a,光标回到首行;5.ctrl + u,从首行删除到光标处;6.ctrl + e,光标回到尾行;...
      99+
      2024-04-02
    • Navicat快捷键有哪些
      本篇内容介绍了“Navicat快捷键有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Ctrl+Q &n...
      99+
      2024-04-02
    • VSCode快捷键有哪些
      这篇文章将为大家详细讲解有关VSCode快捷键有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 一次搜索所有文件的文本Windows: Ctrl + Shift ...
      99+
      2024-04-02
    • Pycharm快捷键有哪些
      这期内容当中小编将会给大家带来有关Pycharm快捷键有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、注释(添加/消除)(Ctrl + /)这里说下Python的单行注释是 # , 多行...
      99+
      2023-06-15
    • vscode有哪些快捷键
      vscode中常用的快捷键有以下几种:Ctrl + Shift + P:显示命令面板;Ctrl + P:快速打开;Ctrl + Shift + N:新建窗口/实例;Ctrl + Shift + W:关闭窗口/实例;Ctrl+X:剪切行;Ct...
      99+
      2024-04-02
    • vim快捷键有哪些
      vim快捷键有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)...
      99+
      2023-06-09
    • Flex快捷键有哪些
      小编给大家分享一下Flex快捷键有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex 快捷键大全◆常用Flex 快捷键如下:Ctrl-F11: 执行(Ru...
      99+
      2023-06-17
    • VB.NET快捷键有哪些
      这篇文章主要介绍了VB.NET快捷键有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。VB.NET快捷键之文件快捷键Ctrl + Shift ...
      99+
      2023-06-17
    • win7快捷键有哪些
      这篇文章主要介绍“win7快捷键有哪些”,在日常操作中,相信很多人在win7快捷键有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7快捷键有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!wi...
      99+
      2023-07-01
    • win11键盘快捷键有哪些
      本篇内容介绍了“win11键盘快捷键有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win11键盘快捷键有哪些:一、F键 F1 显示帮助...
      99+
      2023-06-30
    • 常用FlexBuilder快捷键有哪些
      这篇文章主要为大家展示了“常用FlexBuilder快捷键有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“常用FlexBuilder快捷键有哪些”这篇文章吧。有用的FlexBuilder快捷...
      99+
      2023-06-17
    • Pycharm常用快捷键有哪些
      小编给大家分享一下Pycharm常用快捷键有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!常用快捷键快捷键功能Ctrl + Q快速查看文档Ctrl + F1显示错误描述或警告信息Ctrl + /行注释(可选中多行)Ct...
      99+
      2023-06-27
    • PHPSTORM有哪些常用快捷键
      本篇内容介绍了“PHPSTORM有哪些常用快捷键”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!常用 AltAlt+1 显示 / 隐藏 Pro...
      99+
      2023-07-05
    • MyEclipse常用快捷键有哪些
      这篇文章主要讲解了“MyEclipse常用快捷键有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MyEclipse常用快捷键有哪些”吧!编辑作用域功能快捷键全局查找并替换Ctrl+F文本...
      99+
      2023-06-03
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作