Я пытаюсь создать локальный ярлык (срабатывает только при активном окне) с помощью меню задач, для которого я нацеливаюсь клавишей «Escape»
С помощью следующего кода менюэлемент отображается успешно, и событие щелчка срабатывает правильно, когда я нажимаю на элемент через меню.Однако, когда я пытаюсь добавить ускоритель и использовать сочетание клавиш, оно не срабатывает.
const contextMenu = Menu.buildFromTemplate([
{ role: 'about' },
{
label: 'Exit Fullscreen',
accelerator: 'Escape',
click() { console.log('Event fired') }
},
{ label: 'Quit', click() { app.quit() } }
])
Я проверил, что это не проблема тихого сбоя, когда возникает конфликт с сочетаниями клавиш, когда он используется, регистрируя глобальные сочетания клавиш, которые работали по назначению.
Другая любопытная вещь заключается в том, что если я передаю тот же результат из Menu.buildFromTemplate()
в строку меню через BrowserWindow.setMenu()
, то он отлично работает, как указано выше.
Это заставило меня задуматься, а не являются ли сочетания клавиш для меню в трее дажеподдерживается?
На основании приведенных ниже документов создается впечатление, что контекстное меню для панели задач принимает те же объекты Menu / MenuItem, что и строка меню в BrowserWindow.
https://electronjs.org/docs/api/tray
Глядя на документацию для объекта ускорителя, он говорит, что Shortcuts are registered with the globalShortcut module using the register method...
, но, как указано выше, при использовании меню BrowserWindow он работал без необходимости глобального регистра.
https://electronjs.org/docs/api/accelerator
Я что-то здесь пропускаю или сочетания клавиш просто недоступны для контекстных меню в трее?