Ist es möglich, das CapsLock-Tastensystem neu zuzuordnen, sodass beim Drücken der CapsLock-Taste diese als Escape-Taste und beim Drücken mit einer anderen Taste als Steuertaste fungiert?
Ist es möglich, das CapsLock-Tastensystem neu zuzuordnen, sodass beim Drücken der CapsLock-Taste diese als Escape-Taste und beim Drücken mit einer anderen Taste als Steuertaste fungiert?
Antworten:
Ich habe eine sehr gute Lösung namens xcape gefunden . Aus der README:
xcape wird als Daemon ausgeführt und fängt den Steuerschlüssel ab. Wenn die Steuertaste einzeln gedrückt und losgelassen wird, wird ein Escape-Tastenereignis generiert.
Dies ist sinnvoller, wenn Sie die Feststelltaste erneut Control zugewiesen haben. Zukünftige Versionen dieses Programms erledigen diese Zuordnung möglicherweise für Sie, aber für den Moment müssen Sie dies selbst tun.
Ich habe Caps Escape zugeordnet, damit ich Vim bequemer eintippen kann. Ich benutzte xmodmap
und legte dies in ~/.Xmodmap
.
clear Lock
keycode 0x42 = Escape
Anwenden: xmodmap ~/.Xmodmap
. Sie können dies in eine Datei wie ~ / .bash_profile schreiben (ich schreibe in ~ / .xinitrc, weil ich keinen Login-Manager benutze).
Verwenden Sie zum Zuordnen von Feststelltaste + [eine andere Taste] xbindkeys
.
Eine Linux-Lösung für die systemweite Neuzuordnung von Schlüsseln besteht darin, eine einfache udev-Regel zu schreiben. Es hängt nicht von X ab, funktioniert auf jedem Terminal oder jeder App und ist zwischen den letzten Linux-Installationen portierbar, indem einfach zwei Dateien kopiert werden.
Sie müssen 2 Dateien schreiben: eine, die die udev-Regel enthält, die den Kernel anweist, die Schlüssel neu zuzuordnen, und eine, die die tatsächlichen Zuordnungen enthält, die Sie benötigen.
Mit dieser Methode habe ich meine gesamte Tastatur neu zugeordnet, vielleicht ist der Code als Inspiration nützlich http://git.adirat.com/carpalx-keyboard
Ich habe speziell für diesen Zweck ein Tool in C erstellt, das viele der Probleme mit der xcape / xmodmap-Lösung löst :
Auf AskUbuntu stieß ich auf eine Frage mit einem anderen Wortlaut, die eine gute Antwort bot, die ich jedoch leicht ändern musste, damit sie auf meinen Systemen funktioniert.
Per Louis und Sergiy haben sich dort eine Lösung ausgedacht, die auf Ubuntu 16.04 (Xenial) funktioniert und die ich auf die anderen von mir verwendeten Linux-Systeme mitnehmen werde.
Ich habe xcape installiert und die folgenden Codezeilen in meine .profile
Datei in meinem Ausgangsverzeichnis eingefügt .
Da sich die verschiedenen Display-Manager (gdm / kdm / sddm / etc) auf seltsame Weise verhalten und setxbmap
die Optionen nach dem Anhalten / Fortsetzen oder Sperren / Entsperren zurücksetzen , habe ich herausgefunden, wie die Optionen so festgelegt werden, dass sie sie erben und nicht mehr angezeigt werden. ' t Setzen Sie es die ganze Zeit zurück. Da ich eine Menge suspendiere und wieder aufnehme, musste ich sicherstellen, dass ich nicht viele Kopien von xcape
running bekommen habe, was im neuen Skript unten behoben ist.
Ändern Sie zuerst die Tastaturkonfiguration mit sudo gedit /etc/default/keyboard
und setzen XKBOPTIONS="ctrl:nocaps"
und tragen Sie dann ~/.xprofile
die einzelne Zeile darunter ein.
ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &
Wir hoffen, dass die verschiedenen Abschnitte des Skripts Ihnen Zeit und Ärger ersparen und blockierte Anmeldungen verhindern. Zuerst wird geprüft, ob bereits eine Instanz ausgeführt wird, und sie wird beendet, da das Einzige, was getan xcape
wird, die Zuordnung von Strg zu Esc ist. Dies ist sicher. Der hash
Teil stellt dann sicher, dass Sie die Instanz xcape
installiert haben. Andernfalls kann Ihr System hängen bleiben, wenn Sie versuchen, sich anzumelden Es wird erwartet, dass Skripte ordnungsgemäß beendet werden.
setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'
Sergiy:
Ich habe Gnome-Tweak-Tool verwendet, um die Feststelltaste auf Strg abzubilden, da in den Systemeinstellungen unter Ubuntu 14.04 kein Tastaturlayout vorhanden ist. Dann hat xcape -e 'Control_L = Escape' nicht funktioniert, aber nachdem ich xcape -d verwendet habe, habe ich festgestellt, dass die Feststelltaste den Schlüsselcode 66 generiert und diesen neu zugeordnet hat: xcape -e '# 66 = Escape'. - Sergiy Byelozyorov 4. September 14 um 10.08 Uhr
Louis:
Wie in diesem Blog-Beitrag beschrieben, ist dies nur mit xcape möglich: setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' - Louis Simoneau 4. August 15 um 10.06 Uhr