Aus irgendeinem Grund steckt mein Laptop in der Feststelltaste. Ich habe den Caps LockSchlüssel von xmodmap
bis zugeordnet hyper_l
, sodass ich keinen caps_lock
Schlüssel zum Ausschalten habe. Gibt es eine Möglichkeit, es über die Befehlszeile auszuschalten? Es wäre schön, wenn ich den Sperrstatus zurücksetzen könnte, ohne meinen Computer zurückzusetzen, insbesondere zum späteren Nachschlagen. Das ist schon mal passiert, aber ich würde jetzt gerne wissen, wie man es dieses Mal richtig macht.
command-line
xmodmap
capslock
Echogene
quelle
quelle
Antworten:
Ich kenne kein Kommandozeilen-Tool dafür in Ubuntu. (Für Num Lock gibt es numlockx .) Hier ist ein Einzeiler , den Sie kopieren und in ein Terminalfenster einfügen können:
Hier ist es wieder in erweiterter Form. Wir verwenden die Python- ctypes-Bibliothek , um C-Funktionen direkt aus der X-Bibliothek aufzurufen . Die Funktion
XkbLockModifiers
ändert den Status der Tastatursperren auf der Haupttastatur (XkbUseCoreKbd
= 0x0100), wirkt sich auf die Feststelltaste (2) aus und setzt sie auf 0 (Aus).Wenn Sie einen Modifikator stecken haben, ändern Sie 2 in die Maske der Modifikatoren, die Sie deaktivieren möchten. Die Modifikatoren sind 1 = Umschalttaste, 2 = Feststelltaste (Feststelltaste), 4 = Steuerung, 8 = Mod1, 16 = Mod2, 32 = Mod3, 64 = Mod4, 128 = Mod5. Führen Sie aus, um
xmodmap -pm
zu sehen, welcher Mod1 bis Mod5 entsprechen. Um beispielsweise alle Modifikatoren zu deaktivieren, rufen Sie aufX11.XkbLockModifiers(display, c_uint(0x0100), c_uint(255), c_uint(0))
. Rufen Sie an, um die Num-Taste (Mod2) zu aktivieren und gleichzeitig die Feststelltaste zu deaktivierenX11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2 | 16), c_uint(16))
.Hier ist eine C-Version, wenn Sie eine kleine Binärdatei erstellen möchten, anstatt Python aufzurufen. Kompilieren Sie mit
gcc -O -Wall -o caps_lock_off caps_lock_off.c -lX11
, mit den Paketenbuild-essentials
undlibx11-dev
installiert.Möglicherweise ist auch eine Möglichkeit von Interesse, die Feststelltaste vorübergehend zu ignorieren:
Danach ist die Feststelltaste dauerhaft deaktiviert, bis Sie sie wieder aktivieren
xkbset nullify -lock
.quelle
xtrace
und startenxtrace python -c 'from ctypes import *; X11 = cdll.LoadLibrary("libX11.so.6"); buf = (c_char*16)(); display = X11.XOpenDisplay(None); X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2), c_uint(0)); X11.XkbGetState(display, 0x0100, buf); X11.XCloseDisplay(display)'
und posten Sie die letzten Zeilen, beginnend mit der, die enthältQueryExtension name='XKEYBOARD'
. Ich behaupte nicht, dass ich die Ausgabe verstehe, aber ich werde es versuchen.X-Automatisierungstools können zum Senden der erforderlichen Schlüsselereignisse verwendet werden.
Verwenden
xdotool
Es installieren
Senden Sie ein CAPS-Down / Up-Ereignis
Ein weiteres Werkzeug ist
xte
Es installieren
Senden eines CAPS-Lock-Down / Up-Ereignisses
Verweise:
man xdotool
man xte
quelle
Da die Gilles-Python-Version in neueren Ubuntus-Versionen nicht funktioniert, scheint die Einstellung der korrekten Rückgabe für die geöffnete Anzeige die Lösung zu sein:
(Code angepasst von https://stackoverflow.com/questions/29638210/how-can-i-use-python-xlib-to-generate-a-single-keypress )
quelle
Wenn Sie nicht auf CAPS zugreifen können, weil Sie es in .bashrc neu zugeordnet haben, wie ich es getan habe, hat es für mich funktioniert, einfach auf ein virtuelles Terminal (alt + ctl + fN) umzuschalten und dann zurückzuschalten.
quelle
Ich hatte dieses Problem und konnte es mithilfe der OnBoard-Tastatur (in Ubuntu Mate unter Universal Access) beheben.
Nach dem Einschalten sollte die Feststelltaste rot sein oder irgendwie darauf hinweisen, dass sie gesperrt ist. Dann können Sie drücken, um auszuschalten.
quelle