electron快捷键
- 我们分为在主进程中注册快捷键和在渲染进程中注册快捷键
- 在主进程中我们有两种方式
一 利用[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()。
二 我们可以利用第三方模块比如MOUSETRAP
- 安装模块,我们也可以用Script标签引入
npm install mousetrap --save
- 使用(我们在html页面引入index.js文件,文件内容如下)
const Mousetrap = require('mousetrap');
// #region 快捷键
// single keys
Mousetrap.bind('esc', () => {
   console.log('escape');
}, 'keyup');
Mousetrap.bind('4', () => {
   console.log('4');
})
Mousetrap.bind("?", () => {
   console.log('show shortcuts!');
});
// combinations
Mousetrap.bind('command+shift+k', () => {
   console.log('command shift k');
});
// map multiple combinations to the same callback
Mousetrap.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 sequences
Mousetrap.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文件
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>
   <p>This is test pag!</p>
   <script type="text/javascript" src="./views/js/index.js"></script>
</body>
</html>
开发工作中如果要主进程响应的就用全局快键盘,如果是页面中的快键操作,就可以直接用mousetrap。
electron快捷键的更多相关文章
- 从零开始学Electron笔记(四)
		在之前的文章我们介绍了一下Electron的这个remote模块,接下来我们继续说一下Electron的右键菜单的制作. 在我们日常我们使用的软件中都会存在右键菜单的情况,比如我们用到的浏览器,开发所 ... 
- Electron 项目在 Mac 下复制和粘贴快捷键失效的解决办法
		公司的一个项目需要开发跨平台,由于整个项目完全由我一个人开发,本人也是初次接触 Electron,开发过程中遇到了不少坑,同样的代码 Windows 下复制和粘贴没有问题,Mac 下复制和粘贴失效,在 ... 
- 使用electron为贪吃蛇游戏创建全局快捷键
		上图就是我们的简体版贪吃蛇游戏,我们可以看到使用键盘上面的上下左右可以对贪吃蛇进行控制. The picture above is our simplified version of Snake Ea ... 
- 【Electron】Electron开发入门(二):创建项目Hello Word
		创建简单的Electron程序 1.首先,切换到你的项目空间,我的在 D:\ProjectsSpace\ElectronProjects\ElectronTest,ElectronTest是案例项目文 ... 
- 现在,以编程方式在 Electron 中上传文件,是非常简单的!
		必要的上下文 想尽快熟悉上下文语境的,可以点这里: https://github.com/electron/electron/issues/749 这段讨论,其实本来是讨论如何自动设置 input 标 ... 
- electron + vue 实践项目
		github地址 本地安装环境准备 安装node: * https://nodejs.org/en/download/ 配置webpack: npm install -g webpack(sudo权限 ... 
- electron 学习笔记
		一.快速搭建一个electron 项目结构 # 克隆示例项目的仓库 $ git clone https://github.com/electron/electron-quick-start # 进入这 ... 
- Electron: 从零开始写一个记事本app
		Electron介绍 简单来说,Electron就是可以让你用Javascript.HTML.CSS来编写运行于Windows.macOS.Linux系统之上的桌面应用的库.本文的目的是通过使用Ele ... 
- 关于electron的跨域问题,有本地的图片的地址,访问不了本地的图片
		项目中有上传图片功能,自定义input type=file 改变透明度和超出部分隐藏,把按钮和 点击的图标放在上传文件的按钮上面,然后又碰到到获取input里面的图片的本地的路径, 在electron ... 
随机推荐
- 容器时代的持续交付工具---Drone:Drone介绍与安装
			Drone:Drone is a Container-Native, Continuous Delivery Platform. 官方给的定义,从上面的定义可以得出两个关键点: 1,Container ... 
- js控制滚动条在内容更新超出时自动滚到底部
			//滚动条在内容更新时自动滚到底部var message = document.getElementById('message');message.scrollTop = message.scroll ... 
- C语言入门-数据类型
			一.C语言的类型 整数:char.short.int.long.longlong 浮点型:float.double.long double 逻辑:bool 指针 自定义类型 类型有何不同 类型名称:i ... 
- 2018年蓝桥杯ava b组第一题
			第一题.标题:第几天 2000年的1月1日,是那一年的第1天.那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容 如果问我怎么做的,我就是看日历做的,看了 ... 
- [系列] go-gin-api 路由中间件 - Jaeger 链路追踪(六)
			[DOC] 概述 首先同步下项目概况: 上篇文章分享了,路由中间件 - Jaeger 链路追踪(理论篇),这篇文章咱们接着分享:路由中间件 - Jaeger 链路追踪(实战篇). 这篇文章,确实让大家 ... 
- springboot系列之02-需要了解的宏观知识点
			未经允许,不得转载 原作者:字母哥博客 本文完整系列出自:springboot深入浅出系列 一.Spring Boot . Spring MVC .Spring对比 首先你需要明白一件事情:Sprin ... 
- python教程 - 猿说python
			一.简介 知识改变命运,程序改变世界.互联网时代潜移默化的改变着我们的生活,伴随技术的进步,我想下一个时代应该属于人工智能和机器学习,属于python. pytho ... 
- layui 上传图片回显并点击放大实现
			1.页面代码布局 <div class="layui-col-xs12 form-group"> <div class="layui-col-xs6&q ... 
- python selenium模拟登陆qq空间
			不多说.直接上代码 from selenium import webdriver driver = webdriver.Chrome() driver.get('http://qzone.qq.com ... 
- Matplotlib之Bar Chart
			Matplotlib之Bar Chart: import numpy as np import matplotlib.pyplot as plt data = [[300, 200, 250, 150 ... 
