Scorciatoia da tastiera con 'Mac Driver' in WINE

2

Vorrei mappare il tasto Comando al tasto Control ma, averlo effetto solo mentre eseguo un'applicazione WINE usando il nuovo 'Mac Driver', not X11. Ho provato una modifica del registro ma, non so cosa sto facendo e google non è stato molto utile.

Nessun software di terze parti! Non voglio sentire nulla di simile a KeyRemap4MacBook.

    
posta Oakman 04.11.2013 - 02:52
fonte

2 risposte

1

Stavo cercando di risolvere lo stesso problema per poter utilizzare gli stessi hotkey di Wine come per le normali applicazioni OS X. Nessuna informazione è disponibile da quello che posso dire, quindi la soluzione più semplice è stata trovare il codice sorgente di winemac.drv . L'importante funzione è macdrv_compute_keyboard_layout() che fa molti calcoli diversi ma per i tasti modificatori tutto si riduce essenzialmente a prendere valori da default_map (tutti i tasti modificatori sono contrassegnati come "fissi"). Sfortunatamente, da Wine 1.7.10 non c'è configurabilità qui, quindi i valori della mappa devono essere modificati modificando il file compilato.

Per me il file compilato si trovava sotto /Applications/Wine.app/Contents/Resources/lib/wine/winemac.drv.so . Generalmente è una buona idea creare una copia del file originale prima di cambiarlo. Hai bisogno di un editor esadecimale per aprirlo. Per prima cosa diamo un'occhiata alle seguenti due righe:

{ VK_RMENU,                 0x38 | 0x100,   TRUE },     /* kVK_RightCommand */
{ VK_LMENU,                 0x38,           TRUE },     /* kVK_Command */

In base alla tabella delle chiavi virtuali VK_RMENU ha il valore 0xA5 e VK_LMENU il valore 0xA4. In altre parole, la rappresentazione binaria di queste due linee si presenta così:

A5 00 38 01 01 00 00 00
A4 00 38 00 01 00 00 00

Ho trovato questa sequenza di byte all'offset 0x62770, perché le cose su Wine build potrebbero essere leggermente diverse. Vogliamo mappare il tasto Comando su VK_LCONTROL e VK_RCONTROL che significa che queste due voci devono essere cambiate in:

A3 00 1d 01 01 00 00 00
A2 00 1d 00 01 00 00 00

Ora vorrei anche mappare il tasto Opzione su Alt perché ho bisogno di un tasto Alt funzionante. Di default entrambi i tasti Opzione sono non mappati, il che significa che sono rappresentati da una sequenza di otto zeri nella tabella e devono essere trovati per posizione. Il tasto Opzione sinistro è la terza voce dopo il comando sinistro, il tasto Opzione destro è la sesta voce dopo il comando sinistro (per me offset rispettivamente 0x62790 e 0x627A8). La prima voce può essere modificata in:

A4 00 38 00 01 00 00 00

E il secondo in:

A5 00 38 01 01 00 00 00

Sì, questi sono i valori originariamente assegnati al tasto Comando. In realtà ho solo modificato la voce per il tasto Opzione sinistro, in questo modo è possibile utilizzare il tasto Opzione destro per produrre caratteri speciali.

Questa non è una grande soluzione, più di un trucco che dovrà essere ripetuto ogni volta che Wine viene aggiornato. Inoltre, la rimappatura del tasto Opzione funziona solo per le scorciatoie da tastiera come Alt-F4 ma non per Alt-F. Comunque, fa il lavoro per ora e in futuro gli sviluppatori di Wine sperano di aggiungere qualche configurazione qui. Ho archiviato la richiesta di modifica corrispondente come bug 35351 .

    
risposta data 09.01.2014 - 14:52
fonte
0

La risposta di Wladimir (e altro aiuto che ha fornito sul suo sito) ha reso facile mettere insieme una copia modificata del codice sorgente, in modo che il driver Mac mappasse il tasto Alt alla chiave Opzione e la chiave Win al Cmd chiave, oltre a una copia patchata del file winemac.drv.so. Dettagli qui:

link

Tutto il merito va a Wladimir. Ho solo messo insieme le informazioni che ha fornito.

    
risposta data 13.04.2014 - 18:51
fonte

Leggi altre domande sui tag