Единственный способ, которым я решил это сделать без слушателя onkeydown
, - это глобальная ярлык и события ipc в электоре api.
Первое заявление об отказе ...
Отключения любой клавиши с глобальным ярлыком действительно отключить ГЛОБАЛЬНОМ на вашем компьютере! ПОЖАЛУЙСТА, ОСТОРОЖНО ПРИ ИСПОЛЬЗОВАНИИ ГЛОБАЛЬНЫХ КОРОТКИХ! Если вы забыли отменить регистрацию своего ярлыка или не будете обрабатывать его должным образом, вам будет трудно исправить вашу ошибку без обратного хода!
Это говорит, что это то, что работает для меня ...
const { app, ipcMain,
globalShortcut,
BrowserWindow,
} = require('electron');
app.on('ready',() => {
// Create the browser window
let mainWindow = new BrowserWindow({width: 800, height: 600});
// and load the index.html of the app
mainWindow.loadUrl('file://' + __dirname + '/index.html');
// Register a 'Backspace' shortcut listener when focused on window
mainWindow.on('focus',() => {
if (mainWindow.isFocused()) {
globalShortcut.register('Backspace',() => {
// Provide feedback or logging here
// If you leave this section blank, you will get no
// response when you try the shortcut (i.e. Backspace).
console.log('Backspace was pressed!'); //comment-out or delete when ready.
});
});
});
// ** THE IMPORTANT PART **
// Unregister a 'Backspace' shortcut listener when leaving window.
mainWindow.on('blur',() => {
globalShortcut.unregister('Backspace');
console.log('Backspace is unregistered!'); //comment-out or delete when ready.
});
});
В качестве альтернативы вы можете добавить ярлык внутри ИИЦ «Тумблер» обработчик событий, как это ...
// In the main process
ipcMain.on('disableKey-toggle', (event, keyToDisable) => {
if (!globalShortcut.isRegistered(keyToDisable){
globalShortcut.register(keyToDisable,() => {
console.log(keyToDisable+' is registered!'); //comment-out or delete when ready.
});
} else {
globalShortcut.unregister(keyToDisable);
console.log(keyToDisable+' is unregistered!'); //comment-out or delete when ready.
}
});
// In the render process send the accelerator of the keyToDisable.
// Here we use the 'Backspace' accelerator.
const { ipcRenderer } = require('electron');
ipcRenderer.send('disableKey-toggle', 'Backspace');
Почему бы вам заблокировать ключ Backspace для всего приложения? Вы можете просто заблокировать его в своем интерфейсе/рендерере с помощью «нормального» javascript, описанного [здесь, в stackoverflow] (http://stackoverflow.com/a/2768256/1435377) (или аналогичный ответ ниже этого ответа). :) Я знаю, что тема стартера попросила метод nodejs ... по-прежнему не получается, почему - люди должны просто помнить об этом ... (: –
Я согласен, что обычно самый простой способ. этот вопрос спросил, как это сделать, используя Electron и * not * Javascript. Я предполагаю, что более применимым вариантом использования было бы: если вы откроете окно другого приложения или системного диалога, в котором вы хотите продолжить перехват (не блокировать) ключа -Нажмите. – Josh