【问题标题】:Shortcuts in Electron on MacMac 上 Electron 中的快捷方式
【发布时间】:2017-12-01 12:19:20
【问题描述】:

嗯,我有一个相当简单的任务,这并不难。 我有一个应用程序,它使用electron framework 在 Windows 和 Mac 机器上使用该应用程序。 我注意到我可以在 Windows 上使用 Ctrl+c/Ctrl+v 没有任何问题,但是在我使用 electron-packager 之后,我无法在 Mac 上使用 Cmd+c/Cmd+v。

我找到了像this (CMD + C / CMD + V not working) 这样的解决方案,但我有一个自定义菜单,我不想在电子本身中定义和使用它。所以我找到了this (global accelerators without menue,但问题仍然存在,似乎没有解决方案。 this (Local-Shortcut) 之类的解决方案也不可用,因为它们不会将选定的文本(例如来自文本框)作为参数。

我认为使用 Cmd+c / Cmd+v 不应该是一个真正的问题,因为它是每个应用程序中的常见操作,但我目前没有看到可用的解决方案。 这也会影响所有其他快捷键,例如 Cmd+a 以选择所有内容。

【问题讨论】:

  • local/global 快捷方式有什么问题?
  • 没有办法获取选中的文本作为参数。至少我找不到办法得到它。
  • 是的,当然...这不是问题,我已经将这个插件用于其他用例...问题是,我需要捕获 cmd-xy 事件,以防复制需要知道选定的文本/在插入的情况下,焦点元素。但我认为这不是正确的做法。
  • 我不明白你问题的第一部分。我很确定它也不会在 Windows 上为您提供复制的文本/焦点元素。是吗?

标签: macos cross-platform electron electron-packager


【解决方案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

【讨论】:

  • 这种行为是由设计造成的,如电子/电子#3787 中所述。但是,menue 方法通常是有效的。需要在应用对象的就绪状态后调用各个代码
猜你喜欢
  • 1970-01-01
  • 2016-12-06
  • 2012-03-27
  • 2011-05-23
  • 2021-01-09
  • 1970-01-01
  • 2012-12-18
  • 2012-02-28
  • 1970-01-01
相关资源
最近更新 更多