Electronアプリは、まずelectron-localshortcut入れて、Command+R、Command+Wを潰すのがセオリーだと思う
おまえ、セオリー語れるほど、Electronやってないだろう。
globalShortcut
Electronにはショートカットキーを制御するglobalShortcutという機能があるんですけど、
これは公式ドキュメントにも書いてあるとおり、グローバルに効いてしまう。
アプリにフォーカスが当たって無くても、効いちゃうんですね。
これはこれで便利だけど、効き過ぎちゃう。
こんなCommand+Sを封じるアプリとか作ったら、あらゆるアプリのCommand+Sを封じちゃって大変ですね。
やってはいけませんよ。
'use strict'; const electron = require('electron'); const app = electron.app; const globalShortcut = electron.globalShortcut; app.on('ready', function() { globalShortcut.register('Command+S', function() { // アプリが立ち上がっている間、Command+S による保存を封じるぞ // 嫌がらせかな? console.log('Command+S is pressed') }) });
electron-localshortcut
ということで、electron-localshortcutです。
アプリにショートカットキーをつけたいならこちらです。
npm install --save electron-localshortcut
BrowserWindowインスタンスを生成したあと、
ウィンドウ毎にショートカットキーを登録する。
昔はウィンドウ指定できなかった。今はショートカットキーを有効にするウィンドウを指定する仕様になった。
var electron = require('electron'); var app = electron.app; var localShortcut = require("electron-localshortcut"); var mainWindow; ...(中略)... mainWindow = new BrowserWindow({ width: 600, height: 600, acceptFirstMouse: true, show: false, // show at did-finish-load event }); mainWindow.loadURL(`file://${__dirname}/window-main.html`); // ショートカットキー // Command+Qでアプリを閉じる localShortcut.register(mainWindow, 'Command+Q', function() { app.quit(); }); // event mainWindow.webContents.on('did-finish-load', function() { mainWindow.show(); mainWindow.focus(); });
アプリらしく
で、今回のタイトルです。
Electronのアプリを作ると、
Command+R で画面のリロード、
Command+W でウィンドウを閉じる機能が動いてしまう。
ウェブブラウザに元々ついている機能です。
アプリにもよりますけど、自分はこれ、格好悪いと思う。
とてもブラウザブラウザ(?)してる。
なので、electron-localshortcut で、これのショートカットキーを上書きして、
機能にしないようにしておくべきなのではないか。そう思うのです。
localShortcut.register(mainWindow, 'Command+R', function() { // do nothing }); localShortcut.register(mainWindow, 'Command+W', function() { // do nothing });
おわり
おわりです。
なんかMac前提の話してるけど、細かいことは気にしない!!!