Electron在mac下快捷鍵失效的問題及解決


場景:在消息發送的輸入框中,使用快捷鍵的復制粘貼,全選,等等都會失效。

解決方案如下:

將如下代碼放到main/index.js主進程中

mainWIndow = new BrowserWindow({}); 
if (process.platform === 'darwin') { let contents = mainWindow.webContents globalShortcut.register('CommandOrControl+C', () => { contents.copy() }) globalShortcut.register('CommandOrControl+V', () => { contents.paste() }) globalShortcut.register('CommandOrControl+X', () => { contents.cut() }) globalShortcut.register('CommandOrControl+A', () => { contents.selectAll() }) }

補充:在實踐了上述方案,發現一個后續的問題,electron項目的快捷鍵可以使用了,但是一個更嚴重的問題是,系統本身的快捷鍵由於被electron全局注冊,因此系統的快捷鍵失效。

面臨這個問題的解決辦法,我們進行以下方法修復

  mainWindow.on('focus', () => {
    // mac下快捷鍵失效的問題
    if (process.platform === 'darwin') {
      let contents = mainWindow.webContents
      globalShortcut.register('CommandOrControl+C', () => {
        console.log('注冊復制快捷鍵成功')
        contents.copy()
      })

      globalShortcut.register('CommandOrControl+V', () => {
        console.log('注冊粘貼快捷鍵成功')
        contents.paste()
      })

      globalShortcut.register('CommandOrControl+X', () => {
        console.log('注冊剪切快捷鍵成功')
        contents.cut()
      })

      globalShortcut.register('CommandOrControl+A', () => {
        console.log('注冊全選快捷鍵成功')
        contents.selectAll()
      })
    }
  })
  mainWindow.on('blur', () => {
    globalShortcut.unregisterAll() // 注銷鍵盤事件
  })

思路:在窗口獲取焦點的時候注冊快捷鍵,在窗口失去焦點的時候注銷electron的快捷鍵即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM