Gibt es eine Möglichkeit, STRG+A und STRG+E so zuzuordnen, dass siesystemweitals zum Zeilenanfang gehen und entsprechend zum Zeilenende gehen?
Ich möchte, dass diese Tastenkombinationen nahtlos in jeder App funktionieren, nicht nur im Terminal (wie in OSX).
Mein Hauptsystem ist Ubuntu mit dem Unity-Desktop, aber es wäre gut, eine universelle Lösung zu haben, die desktopunabhängig ist oder zumindest von Gnome, XFCE und LXDE unterstützt wird.
Antwort1
xmodmap
könnte eine Antwort zu liefern scheinen, aber das ist nicht der Fall, denn dieSchlüsselcodeses manipuliert vorhandene Tasten auf der Tastatur, nichtgeändertSchlüssel. A controlAist ein modifizierter Schlüssel.
xmodmap
kann nur vorhandene Tastencodes oder (deren Namen) Keysyms neu zuweisen, wie auf der Manualpage aufgeführt:
keycode
NUMMER=KEYSYMNAME...
keycode
any
=KEYSYMNAME...
keysym
KEYSYMNAME=KEYSYMNAME...
xmodmap
Um die bekannten Schlüsselcodes anzuzeigen , führen Sie aus
xmodmap -pk
das ungefähr Folgendes zeigt (der Übersichtlichkeit halber gekürzt):
There are 4 KeySyms per KeyCode; KeyCodes range from 8 to 255.
KeyCode Keysym (Keysym) ...
Value Value (Name) ...
8 0x0061 (a) 0x0041 (A) 0x00e5 (aring) 0x00c5 (Aring)
9 0x0073 (s) 0x0053 (S) 0x00df (ssharp) 0x00cd (Iacute)
10 0x0064 (d) 0x0044 (D) 0x08ef (partialderivative) 0x00ce (Icircumflex)
11 0x0066 (f) 0x0046 (F) 0x08f6 (function) 0x00cf (Idiaeresis)
12 0x0068 (h) 0x0048 (H) 0x01ff (abovedot) 0x00d3 (Oacute)
13 0x0067 (g) 0x0047 (G) 0x00a9 (copyright) 0x01bd (doubleacute)
14 0x007a (z) 0x005a (Z) 0x07d9 (Greek_OMEGA) 0x00b8 (cedilla)
...
xev
zeigt, was tatsächlich passiert:
KeyPress event, serial 34, synthetic NO, window 0xc00001,
root 0x111, subw 0xc00002, time 2209364614, (27,43), root:(47,86),
state 0x4, keycode 8 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (01) "^A"
XmbLookupString gives 1 bytes: (01) "^A"
XFilterEvent returns: False
KeyRelease event, serial 34, synthetic NO, window 0xc00001,
root 0x111, subw 0xc00002, time 2209364773, (27,43), root:(47,86),
state 0x4, keycode 8 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (01) "^A"
XFilterEvent returns: False
Der Kontrollmodifikator ist der 0x4
im Zustand; der XLookupString
(eine von mehreren verwandten Funktionen zum Kombinieren von Tastenereignissen) transformiert denSchlüsselsymbolfür "a" in ^A
(Strg/A).
Da für keine der Steuertasten ein Keysym vorhanden ist, xmodmap
ist eine Neuzuweisung der Tastencodes für das Problem des OP nicht möglich.
ZulösenDas Problem des OP: Man müsste eine Möglichkeit haben, dem Betriebssystem mitzuteilen, dass es (im Wesentlichen) die Übermittlung separater Ereignisse für controlund ablehnen Asoll – aber Linux und X funktionieren nicht so. Wenn man den Umfang auf eine bestimmte Anwendung (xterm) oder eine Reihe von Anwendungen (Gtk-basierte Programme) beschränkt, könnte man diese separat angehen. Aber eine systemweite Lösung scheint nicht machbar.