Neuzuordnung von CapsLock für Escape and Control System Wide

18

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?

Zameer Manji
quelle
5
Dies scheint sehr schwierig zu sein. Beispielsweise konnten keine Ereignisse zum Herunterfahren von Tasten generiert werden, da Sie nicht wissen, welche Taste gerade gedrückt wurde. Wenn es losgelassen wird, ohne dass eine andere Taste gedrückt wird, dann war es Escape, ansonsten war es Control.
cjm

Antworten:

16

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.

Zameer Manji
quelle
Ich habe ein hackiges Skript erstellt, um dies zu tun: github.com/cmatheson/super-caps
cam
6

Ich habe Caps Escape zugeordnet, damit ich Vim bequemer eintippen kann. Ich benutzte xmodmapund 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.

Emil
quelle
4

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

gimmesudo
quelle
Der Link ist tot. Könnten Sie ihn bitte aktualisieren? Vielen Dank!
Qed
Ich habe es aktualisiert, sorry für die Verzögerung
gimmesudo
Bitbucket sagt "Sie haben keinen Zugriff auf dieses Repository." Kannst du es wieder veröffentlichen? Vielen Dank!
Tianyi Cui
@ TianyiCui überprüfen Sie den Link jetzt
Gimmesudo
1
Der Link ist für mich tot oder blockiert. Könnten Sie die tatsächlichen Dateien in Ihre Antwort aufnehmen?
Labyrinth
1

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 .profileDatei in meinem Ausgangsverzeichnis eingefügt .

AKTUALISIERTE METHODE:

Da sich die verschiedenen Display-Manager (gdm / kdm / sddm / etc) auf seltsame Weise verhalten und setxbmapdie 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 xcaperunning bekommen habe, was im neuen Skript unten behoben ist.

Ändern Sie zuerst die Tastaturkonfiguration mit sudo gedit /etc/default/keyboardund setzen XKBOPTIONS="ctrl:nocaps"und tragen Sie dann ~/.xprofiledie 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 xcapewird, die Zuordnung von Strg zu Esc ist. Dies ist sicher. Der hashTeil 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.

Alter Weg:

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

dragon788
quelle