C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

Electron アプリに electron-localshortcut で非グローバルでMenuのアクセラレーターも使わないキーバインドを追加するメモ

準備:

実装例(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のアクセラレーター機能(メニューに項目を作る必要が生じる)、レンダラープロセス側でにゃんにゃん(若干面倒&今回ケースの用途では直接レンダラープロセス側にコードをごりごりするのは微妙に美しくない気がしたので今回は↑の方法へ)