Spät zur Party, aber das hat mich auch verrückt gemacht; und, so hartnäckig ich auch bin, aufzugeben war keine Option.
Grundsätzlich ist es das, was ich versucht habe (als mein Benutzer oder root, wenn nötig)
- Nur ~ / .Xmodmap
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( Konfigurationsdateien, haben sie nicht berührt )
(Tatsächlich hat das Hinzufügen des xmodmap
Befehls ~/.bashrc
funktioniert, aber es muss jedes Mal nach der Anmeldung ein Terminal gestartet werden.)
Wurde vor ein paar Jahren (?) xkb
Ausgewählt, um die Tastenbelegung und -konfiguration (Schnittstelle zu X) zu übernehmen. xmodmap
Möglicherweise werden jedoch auch wichtige Änderungen an X angefordert, nachdem xkb
diese während der Initialisierung der X-Sitzung ausgeführt wurden.
Das Problem ist, wann sollten diese xmodmap-Einstellungen erfolgen?
Es scheint, dass die oben genannten Dateien zu früh verarbeitet werden und entweder X nicht bereit war, xmodmap-Änderungen zu akzeptieren, oder xkb würde sie überschreiben.
Hinweis: Ich habe diesen Dateien ein "Tracking" hinzugefügt, um sicherzustellen, dass sie tatsächlich zu einem bestimmten Zeitpunkt ausgeführt werden.
Eine Lösung, die zu funktionieren scheint
Ich wollte .desktop
anfangs keine Datei hinzufügen (ein einfaches einzeiliges Skript musste ausreichen), aber das funktioniert, hier ist es also.
Die Lösung kommt von Wie kann man spezielle Tastaturtasten unter Linux neu zuordnen oder austauschen? Lösung 1
Grundsätzlich erstellen Sie eine ~/.config/autostart/my-xmodmap.desktop
Datei und fügen Sie sie ein:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
Ersetzen Sie ihn me
durch Ihren Benutzernamen (beachten Sie, dass ich nicht versucht habe, ~/
oder $HOME
dass dies gleich gut funktioniert /home/me
und der vollständige Pfad von xmodmap wahrscheinlich nicht erforderlich ist ...) und fügen Sie das Ausführungsbit hinzu
chmod +x ~/.config/autostart/my-xmodmap.desktop
Die xmodmap-Befehle müssen ~/.Xmodmap
in diesem Fall in einer Datei sein (oder verwenden Sie die -e
Option oder wählen Sie einen anderen Dateinamen!). Melden Sie sich ab und wieder an.
Beachten Sie, dass Sie das Startprogramm möglicherweise über "Startup Applications" erstellen.
Eine andere Lösung wäre, xmodmap zu vergessen und zu lernen, wie man konfiguriert xkb
!
Bearbeiten (erneut)
Manchmal, vielleicht 25% der Anmeldungen, xmodmap
scheint das immer noch nicht zu funktionieren - während der Befehl tatsächlich ausgeführt wird (ein Tracker beweist das). Die einzige Schlussfolgerung, zu der ich zu diesem Zeitpunkt kommen könnte, ist, dass der xkb
Prozess zu spät im Anmeldevorgang ausgeführt wird und möglicherweise endet, nachdem der Prozess xmodmap
ausgeführt wurde. Sieht nach einer Racebedingung aus ... Also habe ich endlich die Autostart-Desktop-Dateizeile exec
auf geändert
Exec=$HOME/bin/mystart &
(beachte das &
)
mystart
ist ein Skript in einem neuen Verzeichnis, das bin
ich erstellt habe
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
und
chmod u+x ~/bin/mystart
Das Skript wartet 5 Sekunden vor dem Ausführen von xmodmap und verfolgt, wann es ausgeführt wurde (in der Datei /tmp/xmodmap-has-run
).
Hoffentlich ist das alles!