Я использую Electron.js для многих своих настольных приложений. Одна из них - PushNotification, которая очень полезна для тестирования push-уведомлений в приложениях iOS и Android.

Работает хорошо, пока я не упакую его, я больше не могу копировать и вставлять с помощью горячих клавиш. Оказывается, это связано с electron-packager, которым я пользуюсь. После запуска electron-packager приложение больше не принимает копирование и вставку. Это связано с тем, что в сборке релиза нет меню с привязкой клавиш к буферу обмена по умолчанию. Мы можем решить эту проблему, объявив меню вручную.

Меню в electronic.js

Компонент Меню в электронном виде предназначен для меню родных приложений и контекстных меню. Он доступен только в основном процессе, но вы также можете использовать его в процессе рендеринга через модуль remote. В зависимости от платформы macOS имеет совершенно другой стиль меню приложений, чем Windows и Linux.

Меню предоставляет ускоритель, который представляет собой строки, которые могут содержать несколько модификаторов и один код клавиши, объединенные символом +, и используются для определения сочетаний клавиш во всем приложении.

Акселератор очень полезен для поддержки горячих клавиш. Вы можете использовать модуль Меню для настройки сочетаний клавиш, которые будут срабатывать только тогда, когда приложение находится в фокусе. Для этого укажите свойство accelerator при создании MenuItem.

Создание меню вручную

Взгляните на main.js в приложении electronics.js, где мне нужно создать меню вручную.

// https://pracucci.com/atom-electron-enable-copy-and-paste.html
function createMenu() {
  const application = {
    label: "Application",
    submenu: [
      {
        label: "About Application",
        selector: "orderFrontStandardAboutPanel:"
      },
      {
        type: "separator"
      },
      {
        label: "Quit",
        accelerator: "Command+Q",
        click: () => {
          app.quit()
        }
      }
    ]
  }
  ...
}

После этих изменений упакованное приложение имеет правильную поддержку горячих клавиш.

Вы можете следить за обсуждением на GitHub для получения дополнительной информации https://github.com/onmyway133/blog/issues/67