Późno na imprezę, ale to również doprowadzało mnie do szału; i uparty jak ja, poddanie się nie było opcją.
Zasadniczo to właśnie próbowałem (jako mój użytkownik lub root, jeśli to konieczne)
- ~ / .Xmodmap
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( pliki konfiguracyjne, nie dotknąłem )
(Właściwie dodanie xmodmappolecenia ~/.bashrcdziałało, ale wymaga uruchomienia terminala za każdym razem po zalogowaniu)
Kilka lat temu (?) xkbZostał wybrany do obsługi mapowania i konfiguracji kluczy (interfejs z X), ale xmodmapmoże również poprosić o zmiany związane z kluczami w X, po xkbtym jak wykonał swoją pracę podczas inicjowania sesji X.
Problem polega na tym, kiedy powinny się pojawić te ustawienia xmodmap? Wygląda na
to, że powyższe pliki są przetwarzane zbyt wcześnie, a albo X nie był gotowy na zaakceptowanie zmian xmodmap, albo xkb je nadpisze.
Uwaga: Dodałem trochę „śledzenia” do tych plików, aby mieć pewność, że faktycznie zostały uruchomione w pewnym momencie!
Rozwiązanie, które wydaje się działać
.desktopPoczątkowo nie chciałem dodawać pliku (wystarczył prosty skrypt w jednym wierszu), ale to działa, więc oto jest.
Rozwiązanie pochodzi z Jak zmienić przypisanie lub zamianę specjalnych klawiszy klawiatury w systemie Linux? „rozwiązanie 1”
Zasadniczo utwórz ~/.config/autostart/my-xmodmap.desktopplik i umieść w nim:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
zastąp meswoją nazwą użytkownika (pamiętaj, że nie zadałem sobie trudu, aby spróbować ~/lub $HOMEże może równie dobrze działać zamiast /home/me, a pełna ścieżka xmodmap prawdopodobnie nie jest konieczna ...) i dodaj bit exec
chmod +x ~/.config/autostart/my-xmodmap.desktop
W ~/.Xmodmaptym przypadku polecenia xmodmap muszą znajdować się w pliku (lub skorzystać z -eopcji lub wybrać inną nazwę pliku!). Wyloguj się i zaloguj ponownie.
Pamiętaj, że możesz utworzyć program startowy z „Aplikacji startowych”.
Innym rozwiązaniem byłoby zapomnienie xmodmap i naucz się konfigurować xkb!
Edytuj (ponownie)
Czasami, może 25% logowania, xmodmapnadal wydaje się nie działać - podczas gdy polecenie jest faktycznie uruchomione (tracker to potwierdza). Jedynym wnioskiem, do jakiego mogę teraz dojść, jest to, że xkbproces działa późno w procesie logowania i może zakończyć się po jego xmodmapuruchomieniu. Wygląda jak warunek wyścigu ... W końcu zmieniłem execlinię pliku z autostartem pulpitu na
Exec=$HOME/bin/mystart &
(zwróć uwagę &)
mystartto skrypt w nowym katalogu, binktóry utworzyłem
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
i
chmod u+x ~/bin/mystart
Skrypt śpi 5 sekund przed uruchomieniem Xmodmap i śledzi, kiedy się uruchomił (w pliku /tmp/xmodmap-has-run).
Mam nadzieję, że to wszystko!