#javascript #node.js #electron
#javascript #node.js #electron
Вопрос:
У меня есть приложение Electron с a BrowserWindow
, которое содержит index.html
для пользовательского интерфейса приложения и несколько BrowserView
элементов:
browserWindow = new BrowserWindow({ width: width, height: height, frame: false });
browserWindow.webContents.loadURL('file://' __dirname '/index.html');
var bv = new BrowserView({ webPreferences: { nodeIntegration: false }});
browserWindow.setBrowserView(bv);
Я бы хотел иметь сокращения клавиатуры, такие как CTRL X, отовсюду внутри приложения.
globalShortcut
здесь не в порядке, потому что это относится ко всем запущенным в данный момент процессам. В качестве примера, следующий ярлык будет перехвачен, даже если в фокусе находится другое приложение, отличное от приложения Electron (напримерnotepad.exe
)globalShortcut.register('CommandOrControl X', () => { console.log('CommandOrControl X is pressed') })
- Этот метод не подходит, потому что он работает только в том случае, если
index.html
имеет фокус, но не в том случае, если aBrowserView
имеет фокус:browserWindow.webContents.on('before-input-event', (event, input) => { if (input.control amp;amp; input.key.toLowerCase() === 'x') { ... }
Вопрос: как зарегистрировать сочетание клавиш для текущего окна приложения Electron, работающее, если index.html
имеет фокус, но также и если BrowserView
имеет фокус?
Ответ №1:
Решение: мы должны запустить этот код для каждого BrowserView
webContents
:
bv.webContents.on('before-input-event', (event, input) => {
if (input.control amp;amp; input.key.toLowerCase() === 'x') {
...
}