Openbox überschreibt die xmodmap-Konfiguration


9

Ich richte openbox auf meinem Laptop unter Linux Mint 13 ein. Ich möchte, dass meine Feststelltaste als zusätzliche Steuertaste fungiert. Ich habe die erforderlichen Einstellungen in meine ~/.XmodmapDatei eingefügt und sie durch Ausführen überprüft

xmodmap ~/.Xmodmap

Es funktioniert richtig.

Wenn ich mich jedoch wieder bei meiner Openbox-Sitzung anmelde, sind diese Schlüsseländerungen nicht vorhanden. Wenn Sie den obigen xmodmapBefehl ausführen, funktioniert er wieder, aber ich möchte, dass er beim Start automatisch ausgeführt wird.

Interessant ist, dass ich zenitymeiner ~/.config/openbox/autostartDatei einen Testbefehl wie folgt hinzugefügt habe

zenity --info --text=Hello

Dies erzeugt ein kleines Dialogfenster und wird erst beendet, nachdem der Dialog geschlossen wurde.

Wenn ich mich jetzt wieder bei meiner Openbox-Sitzung anmelde, fungiert die Feststelltaste als Strg-Taste, bis der Zenity-Dialog geschlossen wird. Sobald dieser Dialog geschlossen ist, kehrt die Feststelltaste zu ihrem Standardverhalten zurück.

Ich habe mit Google nichts dazu gefunden, daher bitte ich hier um Hilfe. Habt ihr irgendwelche Ideen, was schief gehen könnte?

Aktualisieren:

Ich habe versucht, dies herauszufinden, und in meinen Experimenten habe ich meine /usr/bin/xmodmapDatei kopiert /usr/bin/xmodmap_und durch /usr/bin/xmodmapdas folgende Bash-Skript ersetzt

#!/bin/bash

{
    echo '-------'
    date
    echo xmodmap "$@"
} >> ~/xmodmap-calls

exec /usr/bin/xmodmap_ "$@"

Jedes Mal, wenn ein verdammtes Skript auf dem System ausgeführt wird xmodmap, lerne ich es kennen.

Damit melde ich mich neu an und finde nur einen Eintrag in meiner ~/xmodmap-callsDatei, der meinen ausführt ~/.Xmodmap, der erwartet wird. Also dachte ich xmodmap, es ist nicht so, dass meine Änderungen überschrieben werden.

Als nächstes führte mich ein bisschen googeln in den setxkbmapBefehl ein, der anscheinend auch das Gleiche tun kann. Ich habe diese ausführbare Datei auch ersetzt, ähnlich wie oben bei xmodmap. Und ich habe den Täterbefehl bekommen!

setxkbmap -option terminate:ctrl_alt_bksp

Ich habe absolut keine Ahnung, was das bewirkt, aber nach dem Ausführen xmodmap ~/.Xmodmap(wodurch meine Einstellungen korrekt angewendet wurden) werden meine Änderungen zurückgesetzt, wenn ich den obigen Befehl ausführe! Edit : Das wird wirklich lustig. Nur ein setxkbmapBefehl ohne Argumente, überschreibt glücklich meine Änderungen durch den xmodmap ~/.XmodmapBefehl.

Jetzt muss ich zwei Dinge herausfinden, woher das kommt setxkbmapund warum und wie man das behebt. Ich bin immer noch im Ermittlungsverfahren, könnte aber ernsthaft Hilfe gebrauchen :)

Update 2

Zum Teufel mit xmodmap. Ich kann nicht herausfinden, woher das setxkbmapaufgerufen wird, aber ich habe eine Möglichkeit gefunden, mithilfe des setxkbmapBefehls meine Feststelltaste als Strg zu verhalten.

setxkbmap -option ctrl:nocaps

Kurz vor dem Start von openbox. Funktioniert hervorragend. Die Feststelltaste bleibt als Strg-Taste erhalten. xmodmapwird nie ausgeführt.

Ich werde diese Frage hier offen halten, damit jemand, der diese Dinge kennt, einen Einblick geben kann. Auch für Leute, die sich dem nach mir stellen :)

Update 3

Hier ist der Inhalt von mir .config/openbox/autostart, wie von pedrosaurio angefordert.

#!/bin/bash

# Set the wallpaper.
feh --bg-scale /wall.png

# Set default brightness.
xbacklight -time 1 '=40'

# Compositing.
xcompmgr &

# The panel.
tint2 &

# Start a terminal too.
roxterm &

Soweit ich das beurteilen kann, hat dies nichts mit der Tastatur zu tun. Hier ist auch das Skript, mit dem meine Sitzung gestartet wird: (Von lightdm ausgeführt)

#!/bin/bash

setxkbmap -option ctrl:nocaps

exec openbox-session

Sie verwenden wahrscheinlich eine Art Tastaturkonfiguration, z. B. wählen Sie das Tastaturlayout oder etwas Ähnliches, das Ihre vorgenommenen Änderungen
rückgängig macht

Der einzige andere Ort, an dem ich mit der Tastaturkonfiguration herumgespielt habe, ist das Fenster mit den Einstellungen für das GUI-Tastaturlayout, in dem ich die Feststelltaste geändert habe, um mich als zusätzliche Strg-Taste zu verhalten. Das funktioniert gut, im Cinnamon DE fungiert meine Feststelltaste auch nach einem erneuten Anmelden als Strg. Ich denke, diese Konfiguration war nur Zimt, aber ich bin nicht sicher.
Shrikant Sharat

Wie fügen Sie den Befehl im Autostart-Skript hinzu?
Pedrosaurio

Können Sie Ihre autostartDatei posten ?
Pedrosaurio

Antworten:


1

Ich hatte ein ähnliches Problem. Es stellte sich heraus, dass es durch ibus verursacht wurde. Ich habe es einfach deinstalliert, da ich seine Dienste nicht benötige.

Ich habe den Schuldigen gefunden, indem ich Ihren Trick verwendet habe, setxkbmap durch ein Skript zu ersetzen, aber ich habe auch hinzugefügt ps -AF --forest, um den Aufrufer von setxkbmap zu identifizieren.


0

Ohne Ihr Autostart-Skript zu kennen, wette ich, dass Sie nicht die richtige Syntax verwenden, indem Sie Ihre Befehle mit dem kaufmännischen Und ( &) im Hintergrund ausführen lassen .

Versuchen Sie, Ihre .config/openbox/autostartDatei so zu bearbeiten , dass sie folgendermaßen aussieht:

# Run the system-wide support stuff
#. $GLOBALAUTOSTART
# Programs to launch at startup
# Programs that will run after Openbox has started
(sleep 1 && xmodmap ~/.Xmodmap ) &

Wenn Sie Zweifel haben, schauen Sie im Openbox-Wiki nach, wie alle Beispiele &nach jedem Eintrag aussehen .

http://openbox.org/wiki/Help:Autostart


Meine Autostart-Datei ist leer. Zu einem Zeitpunkt hatte ich xmodmap ~/.Xmodmapin dieser Datei (ohne eine &, schien nicht notwendig). Ich habe xmodmap(und jetzt setxkbmap) das Skript aufgerufen, das meine Openbox-Sitzung startet. Kurz vor dem Ausführen führe exec openbox-sessionich den setxkbmapBefehl aus.
Shrikant Sharat

Wenn ich eine sleep 1Verzögerung hinzufüge , damit die xmodmapÄnderungen übernommen werden, nachdem alles andere geladen wurde, ist dies zwar die meiste Zeit möglich, aber ich fühle mich nicht zu sicher in Bezug auf die Lösung. Ich würde es lieber nicht tun, wenn ich Alternativen habe.
Shrikant Sharat

Sie können natürlich alle Kommentare und den sleepBefehl vermeiden , dennoch &ist das nach jedem Eintrag notwendig, sonst werden alle Programme nach dem ersten Eintrag überhaupt nicht ausgeführt.
Pedrosaurio

Ja, wenn es sich um eine App / einen Prozess mit langer Laufzeit handelt, &wird das Blockieren einer App / eines Prozesses blockiert. Ich habe dieses Verhalten mit dem zenityBefehl verwendet, um festzustellen, dass meine xmodmapÄnderungen nach autostart Abschluss überschrieben werden . Mein Autostart wird jetzt größer und wird gleich in die Frage eingefügt. Es hat jedoch nichts mit der Tastatur zu tun.
Shrikant Sharat

Und ohne den Befehl sleep werden die von vorgenommenen Änderungen xmodmapüberschrieben, sobald die Autostart-Datei beendet ist.
Shrikant Sharat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.