Feststelltaste neu zuordnen, um zu steuern und zu entkommen (nicht die übliche Methode)

27

Ich kann xmodmap verwenden, um die Feststelltaste neu zuzuordnen, sodass sie als Steuertaste oder als Escape-Taste fungiert. Ich möchte beide Funktionen wie folgt kombinieren:

Wenn ich die Feststelltaste drücke und dann loslasse, wird Escape gesendet. Wenn ich die Feststelltaste gedrückt halte und eine andere Taste drücke (z. B. A), wird Control-A gesendet.

Gibt es eine Kombination aus xkb, xmodmap und etwas anderem, durch die sich die Feststelltaste in X so verhält?

Ich verwende Ubuntu Precise auf einem Macbook Air 3,1.

user372737
quelle

Antworten:

-2

Sie können das erste (Zuordnen Caps Lockzu Esc) ausführen, das zweite jedoch nicht.

Einfache Erklärung: Ist Caps Lock nur nicht dazu gedacht, etwas zu tun, wenn es gedrückt wird.

Ausführliche Erklärung: Es gibt viele Arten von Schlüsseln. Zwei davon sind Modifier Keys und Lock Keys .

Caps Lockist eine Lock - Taste , während Tasten wie Ctrl, Altund Shiftsind Modifier Keys .

Es ist offensichtlich , aus ihren Namen , dass Modifier Keys die Funktion der nächsten Taste ändern (n) gedrückt, und Lock Keys wirkt als Kippschalter ein- oder ausgeschaltet einige besondere Funktion.

Nun, da Caps Lock ist eine Lock - Taste , können Sie es nicht wie ein verhaltenen Modifier Key ohne es zu einer Abbildung. Caps Lockan sich kann nicht als Modifikatortaste fungieren .

Grün
quelle
Vielen Dank für die Bestätigung, dass X nicht dafür ausgelegt ist, das zu tun, was ich will. Wenn ein X-Guru etwas hacken möchte, damit es funktioniert, melde dich bitte bei mir.
User372737
4
Wie die nicht akzeptierte Antwort unten zeigt, können Sie den zweiten Teil mit zahlreichen Dienstprogrammen wie xcape oder At-Home-Modifier ausführen.
Sparhawk
34

Ich habe dieses Setup auf meinem Mac und ich hatte versucht, einen Weg für Ubuntu zu finden, ohne Glück.

Nun, es funktioniert jetzt. Danke, Tungd, dass du mich zu Xcape geschickt hast . Was ich getan habe, ist wirklich einfach und unkompliziert.

  1. Unter Systemeinstellungen> Tastaturlayout> Optionen ...> Strg-Taste habe ich "Feststelltaste als Strg" aktiviert.

  2. xcape -e 'Control_L = Escape'

Wenn Sie dies tun, fungiert die Feststelltaste als Strg-Taste, wenn Sie sie wie einen Modifikator verwenden, und als Esc-Taste, wenn Sie sie alleine drücken (es gibt eine geringfügige Verzögerung von einigen hundert Millisekunden, wie in der README-Datei von xcape vermerkt) KeyRemap4MacBook.)

Vic Goldfeld
quelle
4
Ich habe verwendet, um gnome-tweak-toolzu mappen Caps Lock, Ctrlda es kein Keyboard layoutin System Settingsauf Ubuntu 14.04 gibt. Dann xcape -e 'Control_L=Escape'hat nicht funktioniert, aber nach der Verwendung xcape -dIch habe entdeckt , dass Caps Lockkeycode 66 und remapped sie jeweils erzeugt: xcape -e '#66=Escape'.
Sergiy Belozorov
3
Gemäß dieser Blog - Post ist es möglich , dies allein mit Xcape zu tun: 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
Dies hätte wirklich die akzeptierte Antwort sein sollen @ user372737
Assaf Lavie
@LouisSimoneau dies tausendmal.
Spencer Boucher
1
Irgendwelche Fortschritte mit dem Verspätungsproblem?
Toothrot
6

Ich suche das auch. Seit einer Woche habe ich selbst eine Teillösung gefunden mit xmodmap:

add Control = Caps_Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

Dies funktioniert natürlich nicht perfekt, es sendet effektiv Escape und Ctrl gleichzeitig, wenn ich CapsLock drücke, aber ich war eine Weile damit zufrieden.

Schließlich fand ich dieses kleine Dienstprogramm https://github.com/alols/xcape . Jetzt kann ich CapsLock einfach neu mit Ctrl verknüpfen und xcape seinen Job machen lassen.

tungd
quelle
Eine weitere Option ist der At-Home-Modifier. Es befindet sich nicht in der aktiven Entwicklung und unterscheidet sich geringfügig von xcape durch die Installation im Stammverzeichnis. Es wird jedoch über xorg.conf ausgelöst und kann daher nur auf bestimmten Tastaturen ausgeführt werden, während gleichzeitig andere Tastaturen verwendet werden.
Sparhawk
4

BEARBEITEN: Dies wurde für die meisten intelligenten (neueren) Display-Manager behoben.

Per Louis und Sergiy habe ich mir eine Lösung ausgedacht, die für mich unter Ubuntu 16.04 (Xenial) mit LightDM und Unity funktioniert.

Ich füge die folgende Codezeile in meine .xprofileDatei in meinem Home-Verzeichnis ein.

setxkbmap -option 'caps:ctrl_modifier' && xcape -e 'Caps_Lock=Escape' &

Das nachfolgende & stellt den Befehl xcape in den Hintergrund, damit Ihre Sitzung nicht blockiert wird. Die setxkbmap nimmt ihre Änderung sofort vor.

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
3

Installieren xcape

sudo apt-get install xcape

Fügen Sie die beiden Zeilen in Ihrem ein ~/.bashrc

/usr/bin/setxkbmap -option 'caps:ctrl_modifier'⏎
/usr/bin/xcape -e 'Caps_Lock=Escape' -t 100

Beachten Sie das Teil -t 100, wenn Sie es nicht einstellen, können Sie eine Verzögerung in Esc bemerken, wenn Sie vim verwenden.

Searene
quelle
sudo apt-get install xcape(Tippfehler)
David Shaked
1

Ich habe speziell für diesen Zweck ein Tool in C erstellt, das viele der Probleme mit der xcape / xmodmap-Lösung löst :

pepper_chico
quelle
Gibt es eine Möglichkeit, den "Swap" von Esc zu Caps zu deaktivieren? Ich bevorzuge es, überhaupt keine Caps zu haben und das alte und das neue Esc so zu belassen, dass sie sich beide als Escape verhalten.
dragon788
Danke, ich werde einen Link setzen müssen, um dies automatisch in meine Punktedateien zu kompilieren. Ich kann auch die README.md PR wie auf Ubuntu 16.04 benötigt es libudev-dev und libevdev-dev um zu kompilieren.
dragon788
@ dragon788 komm zu Arch (du könntest sogar Antergos probieren). Ich bin vor Jahren aus Ubuntu ausgezogen und werde nie mehr zurückkehren, es ist einfach viel besser.
pepper_chico