Chciałem rozwiązać ten sam problem, aby używać tych samych skrótów klawiszowych w Wine, co w przypadku zwykłych aplikacji OS X. Żadne informacje na ten temat nie są dostępne z tego, co mogę powiedzieć, więc najprostszym rozwiązaniem okazało się znalezienie kod źródłowy winemac.drv
. Ważną funkcją jest macdrv_compute_keyboard_layout()
który wykonuje wiele różnych obliczeń, ale dla klawiszy modyfikujących wszystko sprowadza się zasadniczo do pobierania wartości z default_map
(wszystkie klawisze modyfikujące są oznaczone jako „stałe”). Niestety, od wersji Wine 1.7.10 nie ma tutaj możliwości konfiguracji, więc wartości map należy zmienić, modyfikując skompilowany plik.
Dla mnie skompilowany plik znajdował się pod /Applications/Wine.app/Contents/Resources/lib/wine/winemac.drv.so
. Zazwyczaj dobrym pomysłem jest utworzenie kopii oryginalnego pliku przed jego zmianą. Potrzebujesz edytora hex, aby go otworzyć. Najpierw spójrzmy na następujące dwie linie:
{ VK_RMENU, 0x38 | 0x100, TRUE }, /* kVK_RightCommand */
{ VK_LMENU, 0x38, TRUE }, /* kVK_Command */
Według wirtualna tabela kluczy VK_RMENU
ma wartość 0xA5 i VK_LMENU
wartość 0xA4. Innymi słowy, binarna reprezentacja tych dwóch linii wygląda tak:
A5 00 38 01 01 00 00 00
A4 00 38 00 01 00 00 00
Znalazłem tę sekwencję bajtów z przesunięciem 0x62770, ponieważ twoje rzeczy do budowania Wine mogą być nieco inne. Chcemy odwzorować klawisz Command na VK_LCONTROL
i VK_RCONTROL
co oznacza, że te dwa wpisy muszą zostać zmienione na:
A3 00 1d 01 01 00 00 00
A2 00 1d 00 01 00 00 00
Teraz chciałbym również mapować klawisz Option na Alt, ponieważ potrzebuję działającego klawisza Alt. Domyślnie oba klawisze opcji nie są mapowane, co oznacza, że są reprezentowane przez sekwencję ośmiu zer w tabeli i muszą być znalezione według pozycji. Lewy klawisz opcji to trzeci wpis po lewej komendzie, prawy klawisz opcji to szósty wpis po lewej komendzie (dla mnie odpowiednio przesunięcie 0x62790 i 0x627A8). Pierwszy wpis można zmienić na:
A4 00 38 00 01 00 00 00
A drugi w:
A5 00 38 01 01 00 00 00
Tak, są to wartości pierwotnie przypisane do klawisza polecenia. Zmieniłem tylko wpis dla lewego klawisza opcji, w ten sposób prawy klawisz opcji może być nadal używany do tworzenia znaków specjalnych.
To nie jest świetne rozwiązanie, więcej hacków, które będą musiały być powtarzane za każdym razem, gdy Wine zostanie zaktualizowany. Również ponowne mapowanie klawisza opcji działa tylko dla skrótów klawiaturowych, takich jak Alt-F4, ale nie dla Alt-F. Mimo to robi to teraz, aw przyszłości deweloperzy Wine mają nadzieję, że dodadzą tu trochę konfiguracji. Złożyłem odpowiednie żądanie zmiany jako błąd 35351 .