Warum ist die Scroll Lock-Taste in Cinnamon / Linux / Xorg deaktiviert?


13

Ich habe kürzlich eine Tastatur mit Hintergrundbeleuchtung gekauft, die so konzipiert ist, dass die Scroll Lock-Taste zum Umschalten der Hintergrundbeleuchtung verwendet wird. Ich stellte schnell fest, dass Cinnamon nicht richtig reagiert, wenn die Scroll Lock-Taste gedrückt wird. Ursprünglich dachte ich, die Hintergrundbeleuchtung der Tastatur sei DOA, weil alles andere sofort funktionierte. Nach einem Neustart stellte ich fest, dass ich vor dem Start von Xorg die Hintergrundbeleuchtung mit der Scroll Lock-Taste erfolgreich umschalten konnte. Nach dem Start von Xorg (und folglich von cinnamon_session) funktionierte diese Funktionalität erneut nicht mehr.

Damit die Hintergrundbeleuchtung nach dem Start von Xorg funktioniert, musste ich ein: ausgeben xset led named "Scroll Lock", um diese Funktionalität zu aktivieren und zu deaktivieren.

Nach einigem Nachforschen stieß ich auf ein Programm mit dem Namen, xevdass die Schlüsselereignisinformationen nach dem Start auf dem Terminal abgelegt hat. Beim Drücken der Scroll Lock-Taste wurde das Terminal mit folgenden Informationen gefüllt:

KeyPress-Ereignis, Seriennummer 34, synthetisches NEIN, Fenster 0x2c00001, Stammverzeichnis 0x2df, Subw 0x0, Zeit 2609824, (410,0), Stammverzeichnis: (1724,142), Status 0x0, Schlüsselcode 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString gibt 0 Bytes: XmbLookupString gibt 0 Bytes: XFilterEvent gibt zurück: False

KeyRelease-Ereignis, Seriennummer 37, synthetisches NEIN, Fenster 0x2c00001, Stammverzeichnis 0x2df, Unterw. 0x0, Uhrzeit 2609912, (410,0), Stammverzeichnis: (1724,142), Status 0x0, Schlüsselcode 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString gibt 0 Bytes:

Ich weiß also, dass das Schlüsselereignis an den Kernel gesendet wird.

Interessanterweise beobachtete ich auch ein merkwürdiges Verhalten im Terminal (noch vor dem Starten von Xorg oder Cinnamon) und der Verwendung von Scroll Lock. Zu diesem Zeitpunkt schaltete sich meine Hintergrundbeleuchtung wie erwartet um, aber wenn die Bildlaufsperre aktiviert war, wurde nichts, was ich eingegeben habe, auf den Bildschirm geschrieben. Nach dem Deaktivieren von Scroll Lock wurde alles, was ich geschrieben hatte, sofort auf das Terminal übertragen, als ob es zuvor gepuffert worden wäre.

tl; dr Was ist mit Scroll Lock und Xorg?


Hast du Glück, dieses Problem zu lösen, @sherrellbc?
Pykler

Antworten:


10

Ich kenne Cinnamon nicht, aber es sollte möglich sein, die Scroll Lock-Taste zu aktivieren.

Zuerst müssen wir sehen, ob Sie einen freien Tastaturmodifikator-Steckplatz haben. Lauf:

xmodmap -pm

Daraufhin wird eine Liste Ihres aktuellen Modifikator-Setups gedruckt. Hoffentlich werden in einer dieser Zeilen keine Schlüssel aufgelistet. im Allgemeinen wird das sein mod3. Angenommen, dies ist der Fall, können Sie die Bildlaufsperre mit folgendem Befehl aktivieren:

xmodmap -e "add mod3 = Scroll_Lock"

Ihre Scroll Lock-LED sollte jetzt auf das Drücken der Scroll Lock-Taste reagieren.

Wenn das funktioniert, möchten Sie wahrscheinlich, dass X das automatisch macht, wenn es startet. Es gibt verschiedene Möglichkeiten, dies zu tun: Es kann auf Benutzerbasis durchgeführt werden, aber für so etwas halte ich es für sinnvoll, es global festzulegen.

Aber ich habe das noch nie zuvor gemacht, deshalb sollte ich es besser testen, bevor ich weitere Details erzähle. :)

IN ORDNUNG. Die Methode, mit der ich versucht habe, diese Modmap global zu aktivieren, funktioniert unter KDE nicht. :( Aber die Aktivierung in meinem Home-Verzeichnis scheint in Ordnung zu sein.

Erstellen Sie eine Datei mit dem Namen .Xmodmapin Ihrem Home-Verzeichnis, die diese Zeile enthält:

add mod3 = Scroll_Lock

Der einfachste Weg dies zu tun ist:

cd ~
echo >.Xmodmap "add mod3 = Scroll_Lock"

Starten Sie nun X neu (Logout & Login erneut). Hoffentlich funktioniert Ihre Scroll Lock-Taste. Wenn nicht, lassen Sie es mich bitte wissen.


Die .Xmodmap-Konfiguration funktionierte für mich unter Ubuntu 16.04 / Unity nicht, aber die permanente Lösung in der Antwort von Pykler funktionierte :)
Nebel54

7

Fand den endgültigen Weg nach einer langen Nacht mit vielen halbgebackenen Lösungen.

# backup your symbols file
sudo cp /usr/share/X11/xkb/symbols/us{,.distribution} 

Fügen Sie die folgende Zeile in den xkb_symbols "basic" {Abschnitt ein. Keine Sorge, wenn diese zweite Zeile nicht da ist, ist sie nur für einige Sprachen da und war auf meinem System nicht für uns da.

...
    modifier_map Mod3   { Scroll_Lock }; <==<< Add this line

    include "level3(ralt_switch)" <==<< before this line
};

Möglicherweise müssen Sie dasselbe in Ihren anderen Layouts tun, wenn Sie zwischen Sprachen wechseln

Es gibt auch einen Cache, in dem sich xkb-Layouts befinden. Sie sollten es löschen, bevor Sie Ihren X-Server neu starten, um die neuen Tastatursymboldateien zu überprüfen.

sudo rm -f /var/lib/xkb/*

Das ist nett, aber es hat nur zusammen mit gsettings change und xkboptions change funktioniert, die in askubuntu.com/a/1067921/274298 für mich erwähnt wurden.
peschü

2

Da Scroll Lockdie Tastenkombinationen möglicherweise gestört werden, wenn sie aktiviert sind (benannt F12, Ctrl+ Spacefunktioniert nicht wie erwartet), habe ich beschlossen, die Scroll LockTaste einem manuellen Start von xsetzuzuordnen und den LED-Status in Bezug auf den vorherigen Status umzuschalten.

Ich habe ein ausführbares Skript mit dem Namen erstellt toggle_keyb_led.sh:

xset q | awk '/LED/{ if ($10 ~ "00000000") print "led"; else print "-led" }' | xargs xset

Dadurch wird die Ausgabe von analysiert xset qund die Zeile mit abgeglichen LED mask.

Hinweis 1 : Wenn dies bei Ihnen nicht funktioniert, überprüfen Sie bitte xset -led; xset q | grep 'LED'den aktuellen Maskenwert.

Hinweis 2 : Einige Benutzer müssen rennen xset led 3, um das Licht zu aktivieren. In diesem Fall schreiben Sie bitte das obige Skript um.


Dann können Sie dieses Skript als benutzerdefinierte Verknüpfung mit Ihrer Desktop-Umgebung wie folgt starten (hier mit einem Zimt):

Bildbeschreibung hier eingeben

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.