Electron アプリに electron-localshortcut で非グローバルでMenuのアクセラレーターも使わないキーバインドを追加するメモ
準備:
yarn add electron-localshortcut
; https://www.npmjs.com/package/electron-localshortcut
実装例(public/electron.js
):
const electron = require("electron"); const app = electron.app; const browser_window = electron.BrowserWindow; const local_shortcut = require("electron-localshortcut"); let main_window; function createWindow() { // (...abbr...; 中略) } // (...abbr...; 中略) app.on("ready", () => { createWindow(); local_shortcut.register(main_window, "F12", () => main_window.webContents.toggleDevTools() ); }); // (...abbr...; 後略)
参考
- javascript - Electron does not listen keydown event - Stack Overflow
- Note: 今回のメモの直接の参考です。
- Keyboard Shortcuts | Electron
- Note: 公式情報として参考にはなるけれど
electron-localshortcut
を使う方法は紹介されていません。グローバルショートカット(ウィンドウが非アクティブでも反応する)、Menuのアクセラレーター機能(メニューに項目を作る必要が生じる)、レンダラープロセス側でにゃんにゃん(若干面倒&今回ケースの用途では直接レンダラープロセス側にコードをごりごりするのは微妙に美しくない気がしたので今回は↑の方法へ)
- Note: 公式情報として参考にはなるけれど