Warum wird meine ~ / .Xmodmap-Datei beim Anmelden nicht geladen?

16

Ich habe die folgende ~/.XmodmapDatei gemäß dieser Antwort erstellt .

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

Mit anderen Worten, tauschen Sie Deleteund Menuund machen Sie Caps Lockeine zusätzliche Escape.

Wenn ich mich das nächste Mal anmelde, fragt mich Ubuntu, ob ich ~/.Xmodmapwie erwartet laden möchte . Ich habe es geladen, aber es ist nichts passiert (entweder dann oder bei nachfolgenden Anmeldungen). Wenn ich es manuell ausführe xmodmap ~/.Xmodmap, funktioniert es wie erwartet.

Ich weiß, dass dies zu Beginn der 10.10-Beta funktioniert hat, aber bei meiner neuen 10.10-Installation schlägt dies fehl. Ich habe bis 10.10 noch nichts ausprobiert. Irgendwelche Ideen?

Bearbeiten: Ich habe einige Debugging-Anweisungen eingefügt /etc/gdm/Xsession, um sicherzustellen, dass ~/.Xmodmapgeladen wurde und alles auf magische Weise funktioniert hat. Ich habe nichts geändert, außer ein paar Echos hinzuzufügen, und es funktioniert immer noch, nachdem ich meine Änderungen rückgängig gemacht und erneut gestartet habe. Merkwürdigste Sache, die ich je gesehen habe.

Eine Sache, die mir aufgefallen ist, ist die Tatsache, dass der Teil "Feststelltaste neu zuordnen, um zu entkommen" auf der Xmodmap immer funktioniert hat. Es war nur der Delete / Menu-Swap, der fehlgeschlagen ist. Ich lasse diese Frage für den Fall offen, dass jemand das gleiche Problem hat, da ich eigentlich nicht weiß, warum das Problem aufgehört hat.

Matthew
quelle
Ich habe selbst das gleiche Problem und mache mich verrückt. Wenn ich die Ursache herausfinde, werde ich sicher eine Antwort posten.
Jorge Israel Peña

Antworten:

11

Ich weiß, es ist albern, aber als Workaround könnten Sie einfach einen Autostart durchführen xmodmap ~/.Xmodmap.

Sie können auch /etc/gdm/Xsessionnach der Zeile usermodmap="$HOME/.Xmodmap"suchen und sie am Ende der Datei anhängen, wenn sie nicht vorhanden ist. Wenn Sie der einzige Benutzer des Systems sind, geben Sie einfach Ihre Änderungen ein /etc/X11/Xmodmap.

Turbo
quelle
2
Wie werden Autostart-Befehle ausgeführt?
Miguel.Martin
Siehe Autostart . Am einfachsten ist es wahrscheinlich, einfach einen Eintrag hinzuzufügen Settings->Session and Startupoder etwas in diese Richtung.
Mateen Ulhaq
Oder fügen Sie es beispielsweise Ihrer Shell hinzu. Wenn Sie die Shell also häufig öffnen, wird sie ausgeführt. Das erste, was ich mache, wenn ich Gnome betrete, ist, dass ich die meiste Zeit eine Shell öffne. Das ist also eine Möglichkeit, die funktioniert.
Trusktr
3

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 xmodmapBefehls ~/.bashrcfunktioniert, aber es muss jedes Mal nach der Anmeldung ein Terminal gestartet werden.)

Wurde vor ein paar Jahren (?) xkbAusgewählt, um die Tastenbelegung und -konfiguration (Schnittstelle zu X) zu übernehmen. xmodmapMöglicherweise werden jedoch auch wichtige Änderungen an X angefordert, nachdem xkbdiese 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 .desktopanfangs 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.desktopDatei 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 medurch Ihren Benutzernamen (beachten Sie, dass ich nicht versucht habe, ~/oder $HOMEdass dies gleich gut funktioniert /home/meund 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 ~/.Xmodmapin diesem Fall in einer Datei sein (oder verwenden Sie die -eOption 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, xmodmapscheint 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 xkbProzess zu spät im Anmeldevorgang ausgeführt wird und möglicherweise endet, nachdem der Prozess xmodmapausgeführt wurde. Sieht nach einer Racebedingung aus ... Also habe ich endlich die Autostart-Desktop-Dateizeile execauf geändert

Exec=$HOME/bin/mystart &

(beachte das &) mystartist ein Skript in einem neuen Verzeichnis, das binich 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!

Ring-Ø
quelle
Xkb confituration zu bearbeiten hat bei mir funktioniert
postrational
2

Hier ist vielleicht eine bessere Antwort: http://cweiske.de/howto/xmodmap/ar01s06.html

Sie müssen es vielleicht ein wenig optimieren, um für Sie zu arbeiten, aber die Anweisungen sind alle da.

Robert Massaioli
quelle
1
Diese Anweisungen gelten für KDE, aber wenn ich mir das Gnome-Äquivalent ( /etc/gdm/Xsession) anschaue , sind die Zeilen, die der Link zum Hinzufügen sagt, bereits enthalten.
Matthew
2

Vielleicht haben Sie einen Syntaxfehler in Ihrer ~/.XmodmapDatei?

Versuche es mit:

$ xmodmap ~/.Xmodmap

Das sollte einen Fehler auslösen, wenn es welche gibt.

gpmcadam
quelle
0

Ich hatte das selbe seltsame Problem, als ich versuchte, meine Xmodmap zu starten, während ich mich in meiner Sitzung anmeldete (Ubuntu 13.04). Ich habe es endlich geschafft, mit einer .xinitrc-Datei in meinem Home-Ordner, in der ich meinen Befehl abgelegt habe, zu arbeiten, aber mit absoluten Pfaden:

/usr/bin/xmodmap/home/MYNAME/.Xmodmap

Dann musste ich neu starten (nicht nur neu anmelden), damit es ausgeführt wurde.

greguti
quelle
2
Dies funktioniert bei mir unter Ubuntu 14.04 nicht.
Miguel.Martin