2017-06-28 69 views
6

Cóż, mam dość proste zadanie, które nie może być naprawdę trudne. Mam aplikację, która używa electron framework do korzystania z aplikacji na komputerach z systemem Windows i Mac. Zauważam, że mogę używać Ctrl + c/Ctrl + v na Windowsie bez żadnych problemów, ale nie mogę używać Cmd + c/Cmd + v na Macu po użyciu electron-packager.Skróty w elektronach na Macu

Znalazłem rozwiązania takie jak this (CMD + C/CMD + V not working), ale mam niestandardowe menu i nie chcę definiować i używać tego w samym elektronie. Tak więc znalazłem this (global accelerators without menue, ale problem nadal jest otwarty i wydaje się, że nie ma rozwiązania. Rozwiązania takie jak this (Local-Shortcut) również nie są użyteczne, ponieważ nie pobierają wybranego tekstu (np. Z pola tekstowego) jako parametru.

Myślę, że używanie Cmd + c/Cmd + v nie powinno być prawdziwym problemem, ponieważ jest to typowe działanie w każdej aplikacji, ale w tej chwili nie widzę odpowiedniego rozwiązania. Spowoduje to również wykonanie wszystkich innych skrótów, takich jak Cmd + a, aby zaznaczyć wszystko.

+0

Na czym polega problem z [miejscowy] (https://github.com/electron/ elektrony/blob/master/docs/tutorial/keyboard-shortcuts.md)/[global] (https://github.com/electron/electron/blob/master/docs/api/global-shortcut.md) skróty? –

+0

Nie można uzyskać wybranego tekstu jako parametru. Przynajmniej nie mogłem znaleźć sposobu, żeby to zdobyć. – thardes2

+0

Co z [https://github.com/electron/electron/blob/master/docs/api/clipboard.md](https://github.com/electron/electron/blob/master/docs/api/clipboard .md)? –

Odpowiedz

1

Wygląda na to, że nie można tego zrobić, jeśli naprawdę chcesz ukryć te skróty z menu.

Obecnie najlepszym rozwiązaniem jest wyświetlenie menu skrótów tylko 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

+0

To zachowanie jest wykonane według projektu, jak podano w elektronie/elektronie # 3787. Jednak podejście menue działa ogólnie. Indywidualny kod musi zostać wywołany po stanie gotowości dla obiektu aplikacji – thardes2