Mit xcape können Sie eine Zusatztaste als weitere Taste verwenden, wenn sie einzeln gedrückt und losgelassen wird. Beachten Sie, dass dies etwas langsamer ist als das Drücken der ursprünglichen Taste, da das gedrückte Ereignis erst eintritt, wenn die Taste losgelassen wird. Das Standardverhalten besteht darin, die Escape-Taste automatisch zu generieren, wenn die linke Steuerungstaste gedrückt und wieder losgelassen wird. (Wenn Sie nicht verstehen, warum irgendjemand das möchte, vermute ich, dass Vim nicht Ihr Lieblingstexteditor ist ;)
Installieren Sie zunächst die Entwicklungsabhängigkeiten. Führen Sie auf Debian-basierten Systemen (einschließlich Ubuntu und Linux Mint) Folgendes aus:
$ sudo apt-get install git gcc make pkg-config libx11-dev libxtst-dev libxi-dev
Führen Sie auf Fedora-basierten Systemen Folgendes aus:
$ sudo dnf install git gcc make pkgconfig libX11-devel libXtst-devel libXi-devel
Führen Sie dann Folgendes aus:
$ git clone https://github.com/alols/xcape.git
$ cd xcape
$ make
$ sudo make install
$ xcape [-d] [-f] [-t <timeout ms>] [-e <map-expression>]
-d
Debug-Modus. Tritt nicht in den Hintergrund. Gibt Debug-Informationen aus.
-f
Vordergrundmodus. Tritt nicht in den Hintergrund.
-t <timeout ms>
Wenn Sie eine Taste länger als dieses Timeout gedrückt halten, generiert xcape kein Tastenereignis. Der Standardwert ist 500 ms.
-e <map-expression>
Der Ausdruck hat die Grammatik 'ModKey=Key[|OtherKey][;NextExpression]'
Die Liste der Schlüsselnamen befindet sich in der Header-Datei X11/keysymdef.h
(entfernen Sie das Präfix XK_
). Beachten Sie, dass Umschalttasten aufgrund von Einschränkungen von X11 als Umschalttaste gefolgt von der zu drückenden Taste und nicht als tatsächlicher Name des Zeichens angegeben werden müssen . Um beispielsweise „{“ zu generieren, könnte der Ausdruck 'ModKey=Shift_L|bracketleft'
verwendet werden (vorausgesetzt, Sie haben einen Schlüssel mit „{“ über „[“).
Sie können Schlüssel auch dezimal (Präfix #
), oktal ( #0
) oder hexadezimal ( #0x
) angeben. Sie werden als Schlüsselcodes interpretiert, es sei denn, es wird kein entsprechender Schlüsselname gefunden.
Dadurch generiert die linke Umschalttaste automatisch Escape, wenn sie gedrückt und losgelassen wird, und die linke Steuerungstaste generiert eine Strg-O-Kombination, wenn sie selbstständig gedrückt und losgelassen wird.
xcape -e 'Shift_L=Escape;Control_L=Control_L|O'
In Verbindung mit xmodmap ist es möglich, eine gewöhnliche Taste als zusätzlichen Modifikator zu verwenden. Ordnen Sie zuerst die Taste mit xmodmap dem Modifikator zu und dann den Modifikator mit xcape wieder der Taste. Dies hat jedoch mehrere Einschränkungen zur Folge: Die Taste funktioniert nicht wie gewohnt, bis sie losgelassen wird, und insbesondere kann sie unbeabsichtigt als Modifikator fungieren, wenn Sie zu schnell tippen. Dies ist kein Fehler in xcape, sondern eine unvermeidbare Folge der gemeinsamen Verwendung dieser beiden Tools auf diese Weise. Als Beispiel können wir mit der folgenden Befehlsfolge die Leertaste als zusätzliche Strg-Taste fungieren lassen, wenn sie gedrückt gehalten wird (ähnlich wie Space2ctrl).
# Map an unused modifier's keysym to the spacebar's keycode and make it a
# control modifier. It needs to be an existing key so that emacs won't
# spazz out when you press it. Hyper_L is a good candidate.
spare_modifier="Hyper_L"
xmodmap -e "keycode 65 = $spare_modifier"
xmodmap -e "remove mod4 = $spare_modifier" # hyper_l is mod4 by default
xmodmap -e "add Control = $spare_modifier"
# Map space to an unused keycode (to keep it around for xcape to
# use).
xmodmap -e "keycode any = space"
# Finally use xcape to cause the space bar to generate a space when tapped.
xcape -e "$spare_modifier=space"
Wenn Sie die Angewohnheit haben, Schlüsselcodes Keysyms neu zuzuordnen (z. B. mit xmodmap), können zwei Probleme auftreten.
Sie müssen xcape jedes Mal neu starten, wenn Sie die Zuordnung von Keycodes zu Keysyms ändern (z. B. mit xmodmap), sonst verwendet xcape weiterhin die alte Zuordnung.
Der Schlüssel, den Sie senden möchten, muss einen definierten Schlüsselcode haben. So benötigen Sie beispielsweise bei der Standardzuordnung Control_L=Escape
immer noch eine Escape-Taste, die in Ihrer xmodmap-Zuordnung definiert ist. (Ich umgehe dies, indem ich 255 verwende, was meine Tastatur nicht senden kann).
Die neueste Version finden Sie unter https://github.com/alols/xcape
Der Autor ist unter albin dot olsson unter gmail dot com zu erreichen