Ярлыки в Electron на Mac

Ну, у меня есть довольно простая задача, которая не может быть очень сложной. У меня есть приложение, которое использует электронную структуру для использования приложения на компьютерах с Windows и Mac. Я заметил, что могу без проблем использовать Ctrl+c/Ctrl+v в Windows, но не могу использовать Cmd+c/Cmd+v в Mac после того, как использовал электронный упаковщик.

Я нашел такие решения, как это (CMD + C / CMD + V не работает), но я есть собственное меню, и я не хочу определять и использовать его в самом электроне. Итак, я нашел это (глобальные ускорители без меню, но проблема все еще открыта и, кажется, не является решением. Такие решения, как this (Local-Shortcut), также нельзя использовать, так как они не получают выделенный текст (например, из текстового поля) в качестве параметра.

Я думаю, что использование Cmd+c / Cmd+v не должно быть реальной проблемой, поскольку это обычное действие в каждом приложении, но на данный момент я не вижу подходящего решения. Это также влияет на все другие сочетания клавиш, такие как Cmd + a, чтобы выбрать все.


person thardes2    schedule 28.06.2017    source источник
comment
В чем проблема с local/глобальные ярлыки?   -  person Yann Bertrand    schedule 28.06.2017
comment
Невозможно получить выделенный текст в качестве параметра. По крайней мере, я не мог найти способ получить его.   -  person thardes2    schedule 28.06.2017
comment
Как насчет https://github.com/electron/electron/blob/master/docs/api/clipboard.md?   -  person Yann Bertrand    schedule 28.06.2017
comment
Да, конечно... это не проблема, я уже использую этот плагин для других случаев использования... Дело в том, что мне нужно захватить событие cmd-xy, а в случае копирования мне нужно знать выделенный текст / в случай вставки, сфокусированный элемент. Но я не думаю, что это правильный способ сделать это.   -  person thardes2    schedule 28.06.2017
comment
Я не понимаю первую часть вашего вопроса. Я почти уверен, что он также не дает вам скопированный текст / сфокусированный элемент в Windows. Имеет ли это?   -  person Yann Bertrand    schedule 28.06.2017
comment
Нет, это не так, но на компьютере с Windows копирование, вставка, выбор всего и все другие ярлыки работают нормально без каких-либо дополнительных усилий. Это влияет только на macOS. Я пытаюсь найти обходной путь здесь.   -  person thardes2    schedule 28.06.2017


Ответы (1)


Кажется, нет способа сделать это, если вы действительно хотите скрыть эти ярлыки из меню.

На данный момент лучшим обходным решением является отображение контекстного меню только в MacOS:

const { Menu } = require('electron')

const menuTemplate = [...];

if (process.platform === 'darwin') {
  menuTemplate.push({
    label: 'Edit',
    submenu: [
      {role: 'undo'},
      {role: 'redo'},
      {type: 'separator'},
      {role: 'cut'},
      {role: 'copy'},
      {role: 'paste'},
      {role: 'pasteandmatchstyle'},
      {role: 'delete'},
      {role: 'selectall'}
    ]
  })
}

const applicationMenu = Menu.buildFromTemplate(menuTemplate)
Menu.setApplicationMenu(applicationMenu)

https://blog.avocode.com/blog/4-must-know-tips-for-building-cross-platform-electron-apps

person Yann Bertrand    schedule 28.06.2017
comment
Такое поведение обусловлено дизайном, как указано в файле electronic/electron#3787. Однако в целом метод меню работает. Отдельный код необходимо вызывать после состояния готовности объекта приложения. - person thardes2; 29.06.2017