博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
electron快捷键
阅读量:6294 次
发布时间:2019-06-22

本文共 2232 字,大约阅读时间需要 7 分钟。

  • 我们分为在主进程中注册快捷键和在渲染进程中注册快捷键
  1. 在主进程中我们有两种方式

一 利用[Menu]来模拟快捷键,只有app获得焦点时才生效,很少使用

const { Menu, MenuItem } = require('electron')const menu = new Menu()menu.append(new MenuItem({  label: 'Print',  accelerator: 'CmdOrCtrl+P',  click: () => { console.log('time to print stuff') }}))

二 就是全局快捷键(意思就是不强求app获得焦点),r所以这就不是模拟菜单事件了,我们要监听键盘,因为快捷键的根本操作就是响应键盘的按键

我们可以用globalShortcut来实现

  • 引用globalShortcut模块
const { app, BrowserWindow, ipcMain, globalShortcut } = require('electron');
  • 注册快捷键(在mac10.14 上,客户端没有被信任操作音视频的快捷键失效
const ret = globalShortcut.register('CommandOrControl+X', () => {        console.log('CommandOrControl+X is pressed')    });
  • 检测是否注册成功
if (!ret) {        console.log('registration failed')    }// 检查快捷键是否注册成功    console.log(globalShortcut.isRegistered('CommandOrControl+X'))
  • 注销快捷键
app.on('will-quit', () => {    // 注销快捷键    globalShortcut.unregister('CommandOrControl+X')      // 注销所有快捷键    globalShortcut.unregisterAll()  })

2.在渲染进程中我们也有二种方式

一 可以利用浏览窗口监听键盘事件,这是一种常规的方式,自己判断什么键按下
window.addEventListener('keyup', doSomething, true)
注意第三个参数 true,这意味着当前监听器总是在其他监听器之前接收按键,以避免其它监听器调用 stopPropagation()。

二 我们可以利用第三方模块比如

  • 安装模块,我们也可以用Script标签引入
npm install mousetrap --save
  • 使用(我们在html页面引入index.js文件,文件内容如下)
const Mousetrap = require('mousetrap');// #region 快捷键// single keysMousetrap.bind('esc', () => {   console.log('escape');}, 'keyup');Mousetrap.bind('4', () => {   console.log('4');})Mousetrap.bind("?", () => {   console.log('show shortcuts!');});// combinationsMousetrap.bind('command+shift+k', () => {   console.log('command shift k');});// map multiple combinations to the same callbackMousetrap.bind(['command+k', 'ctrl+k'], () => {   console.log('command k or control k');   // return false to prevent default browser behavior   // and stop event from bubbling   return false;});// gmail style sequencesMousetrap.bind('g i', () => {   console.log('go to inbox');});Mousetrap.bind('* a', () => {   console.log('select all');});// konami code!Mousetrap.bind('up up down down left right left right b a enter', () => {   console.log('konami code');});// #endregion
  • html文件
   
Document

This is test pag!

开发工作中如果要主进程响应的就用全局快键盘,如果是页面中的快键操作,就可以直接用mousetrap。

转载于:https://www.cnblogs.com/ants_double/p/10489714.html

你可能感兴趣的文章
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>