Skrót klawiszowy za pomocą „Mac Driver” w WINE


2

Chciałbym zmapować klawisz Command na klawisz Control, ale niech to ma znaczenie tylko podczas uruchamiania aplikacji WINE przy użyciu nowego „Sterownika Mac”, nie X11. Próbowałem edytować rejestr, ale nie wiem, co robię, a Google nie był bardzo pomocny.

Brak oprogramowania innych firm! Nie chcę słyszeć o niczym takim jak KeyRemap4MacBook.

Odpowiedzi:


1

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 .


0

Odpowiedź Wladimira (i inna pomoc, którą dostarczył na własnej stronie) ułatwiła zmontowanie zmodyfikowanej kopii kodu źródłowego, dzięki czemu sterownik Mac odwzorowuje klawisz Alt na klawisz Option i klawisz Win na klucz Cmd, plus poprawioną kopię pliku winemac.drv.so. Szczegóły tutaj:

http://www.columbia.edu/~em36/winekeymap.html

Wszystkie zasługi należą się Władimirowi. Po prostu zestawiłem informacje, które dostarczył.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.