Dlaczego moje polecenie xmodmap nie uruchamia się podczas uruchamiania / logowania?

10

Chcę uruchomić tę komendę przy każdym logowaniu (lub przy każdym uruchomieniu, jeśli to nie działa): xmodmap -e 'keysym Delete = Menu' -e 'keysym Menu = Delete'

Próbowałem wielu rzeczy. Włożyłem polecenie System > Preferences > Startup Applications. Umieściłem go w .shpliku, oznaczyłem chmod +xi umieściłem w tym pliku System > Preferences > Startup Applications. Włożyłem skrypt /etc/init.d. Wkładam polecenia ~/.profile. Wydaje się, że nic nie działa.

Na koniec umieszczam to w moim ~/.profile:

touch test1
xmodmap -e 'keysym Delete = Menu' -e 'keysym Menu = Delete'
touch test2

Tworzone są zarówno test1, jak i test2, ale klucze nadal nie są ponownie mapowane. Jeśli po prostu skopiuję / wkleję polecenie i uruchomię je ręcznie, będzie działać dobrze. Ale nie będzie działać po zalogowaniu. Jakieś pomysły?

Mateusz
źródło

Odpowiedzi:

11

~/.profileuruchamia się wcześnie w sekwencji logowania. Jeśli środowisko pulpitu konfiguruje układ klawiatury, może zastąpić właśnie załadowane ustawienia.

Umieść swoje ustawienia w pliku o nazwie ~/.Xmodmap:

keysym Delete = Menu
keysym Menu = Delete

W domyślnym środowisku Gnome w Ubuntu 10.04, przy następnym logowaniu pojawi się monit o załadowanie ~/.Xmodmap. Załaduj i zaznacz „nie pytaj mnie ponownie”. Następnie .Xmodmapzostanie zastosowane po ustawieniach domyślnych.

Gilles „SO- przestań być zły”
źródło
Dzięki, działało idealnie. Z ciekawości, jak wrócę do okna dialogowego, które zaznaczyłem „nie pytaj mnie ponownie”, jeśli chcę w przyszłości trochę czasu?
Matthew
1
@Matthew: Untested: uruchom gconf-editor, przejdź do /desktop/gnome/peripherals/keyboard/generali edytuj known_file_listwpis do usunięcia .Xmodmap.
Gilles „SO- przestań być zły”
To działało dla mnie w wersji beta Ubuntu 10.10, kiedy po raz pierwszy odpowiedziałeś na to pytanie. Wczoraj zrobiłem nową instalację Ubuntu 10.10 i umieściłem identyczny plik .Xmodmap w moim folderze domowym. Po ponownym zalogowaniu dostałem okno dialogowe, załadowałem .Xmodmap i zaznaczyłem pole tak jak poprzednio. Ale nie wydaje się, aby ponownie przypisywać klucze. Sprawdziłem w gconf, a .Xmodmap jest zdecydowanie na liście znanych_plików. Jakieś pomysły?
Matthew
To również nie działa w przypadku Gnome 3.10.1 / Archlinux. Zastanawiam się, czy coś nie zostało dostosowane w kolejności, w której Gnome ładuje układy klawiatury.
Caleb
Dla Gnome 3.10, który już nie ładuje ~ / .xmodmap, znalazłem rozwiązanie, które działało na bbs.archlinux.org/viewtopic.php?pid=1194968#p1194968 : wyłącz wtyczkę klawiatury Gnome. $ gsettings set org.gnome.settings-daemon.plugins.keyboard active false
plnx
2

Odkryłem, że we wspomnianym wyżej miejscu w edytorze Gconf-a nazwa twojego poprawionego układu klawiatury powinna pojawić się dwukrotnie, raz pod „listą_plików_znanych” i raz pod „listami aktualizacji”. Jeśli chodzi o to, dlaczego Ubuntu czasami umieszcza ten drugi wpis, a czasem nie ... no cóż, trzyma cię na nogach, prawda?

Nawiasem mówiąc, po wielu badaniach użyłem powyższej poprawki, aby ponownie przypisać lewy klawisz Windows. Umieszczam następującą instrukcję w moim układzie klawiatury, aby zduplikować klawisz strzałki w lewo: -

kod klucza 133 = 0xFF51

(Sprawdź, czy są to odpowiednie kody, przechodząc do xev i naciskając najpierw jeden klawisz, a następnie drugi).

To tylko mała kwestia, ale kiedy jestem w Internecie, daje mi wygodny klawisz „Wstecz” - Alt + Win lewą ręką. Mogę to zrobić bez patrzenia.

Alan
źródło
1
Alan napisał: „Odkryłem, że we wspomnianym wyżej miejscu w edytorze Gconf nazwa poprawionego układu klawiatury powinna pojawić się dwa razy, raz pod„ listą_plików_znanych ”i raz pod„ listami aktualizacji ”. Mogę potwierdzić, że Alan ma rację. W Ubuntu 10.10, aby twój plik ~ / .Xmodmap działał, „.Xmodmap” musi pojawiać się zarówno na „liście_plików_znanych”, jak i na liście „modułów obsługi aktualizacji” w / desktop / gnome / peripherals / keyboard / general in gconf -redaktor. Dzięki, Alan.
1

Niektóre systemy szukają nazwanego pliku ~/.Xmodmapi wykonują znajdujące się tam polecenia. Spróbuj umieścić te linie w tym pliku:

keysym Delete = Menu
keysym Menu = Delete
garyjohn
źródło