Strg/Ctrl-Tasten-Prob (Stichwort: Strg+3 == ESC)

Wasp

Insektenspray-Gegner
Das Problem ist, daß wenn man [Strg]+[3] drückt, sich dies wie ESC verhält. In vi ist das zwar teilweise sehr praktisch, aber gerade in spielen wie quake3/ET/UT oder der gleichen ist das sehr unpraktisch, wenn man, wenn man eigentlich nur auf Waffe nummer 3 wechseln will im Menü landet, wenn man sich derweil duckt (Strg-Taste). Nicht weniger nervig ist es allgemein, daß die Tasten 0-9 während man [Strg] drückt, nicht verwendet werden kann.

Ein sehr kurioses verhalten kann man auch in UT feststellen, bei dem man bei einer Tastenfolge in der auch die Strg-Taste wieder eine Rolle spielt irgenwie die W-Taste feststellen kann. Genau wie konnte ich jedoch noch nicht raus finden.

Jetzt ist natürlich meine Frage, wie man dieses Verhalten der [Strg]+[0-9] Tasten (temporär) abstellen kann, als dass dieses Verhalten (nur) in den Spielen nicht zum tragen kommt.

Gruß
Wasp


Info:
FreeBSD 4.11-stable
OpenBox 3
 
Also ich habe mir jetzt mal xmodmap angeguckt (brauchte einen Moment, um es zu begreifen. D.h. wirklich begriffen habe ich die Ausgabe von xmodmap -pk nach wie vor nicht. Da ich nicht erkenne, wo zum Beispiel steht, was [AltGr]+[q] zurückgeben soll -- seh da nur zwei Zeilen die für mich wie einmal ohne und einmal mit Umschalt aussehen; aber zumindest xev gibt es eindeutig, oder zumindest für mich nachvollziehbar aus: [Strg]+[3] liefert ganz klar eine "3" und kein ESC.

Zuvor hatte ich mir noch kbdcontrol angeguckt, weil ich irgendwie noch diese übersichtliche Ausgabe im Kopf hatte und diese suchte, aber das habe ich jetzt so verstanden, daß kbdcontrol nur für TTYV ist und nicht für TTYP.

Jetzt viel mir gerade noch auf, daß ich quake3 ja (über openbox) von TTYV ausführe, aber auch mit dem Start aus TTYP (zum Bsp. Eterm) ist Beispielsweise [Strg]+[3] nach wie vor mit ESC belegt. :gpaul:

Jemand noch eine Idee? :confused:


Nachtrag:
Habe jetzt einfach mal in xmodmap taste 4 auch mit 3 belegt und siehe da, auch in quake3 ist über die Taste [4] nurnoch Waffe 3 erreichbar, ergo ist xmodmap von interesse -- unabhängig ob unter TTYV und TTYP gestartet.

Nun natürlich die frage, wie kann man das unter xmodmap ändern, bzw überhaupt erst einmal einsehen. xev gibt jedefnalls für [Strg]+[3] auch nur keycode 0x33 zurück, also eine normale "3" und kein "ESC", wie ich es erwartet hätte.

das ruft nun bei mir gleich ein doppeltes :gpaul: :gpaul: hervor :/

Ideen ... ? :(
 
Zuletzt bearbeitet:
Okee, muß es wohl den thread noch mal antreten.

Kann allerdings auch mit ein paar neuen infos diesen, da ich derweil auf FreeBSD 6.1-Release gewechselt habe. Jedenfalls zeigt sicht xev wesentlich kommunikativer:

Code:
KeyPress event, serial 30, synthetic NO, window 0x1c00001,
    root 0x121, subw 0x0, time 12457974, (280,313), root:(831,560),
    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 30, synthetic NO, window 0x1c00001,
    root 0x121, subw 0x0, time 12459261, (280,313), root:(831,560),
    state 0x14, keycode 12 (keysym 0x33, 3), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
    XmbLookupString gives 1 bytes: (1b) "
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1c00001,
    root 0x121, subw 0x0, time 12459693, (280,313), root:(831,560),
    state 0x14, keycode 12 (keysym 0x33, 3), same_screen YES,
    XLookupString gives 1 bytes: (1b) "

KeyRelease event, serial 30, synthetic NO, window 0x1c00001,
    root 0x121, subw 0x0, time 12460342, (280,313), root:(831,560),
    state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:

[Strg] festhalten -> [3] festhalten -> [3] lösen -> [Strg] lösen

Hier scheint XmbLookupString das Byte "1b" zu liefern. Dieses Byte liefert auch ein Druck auf die ESC-Taste.

Code:
KeyPress event, serial 30, synthetic NO, window 0x1c00001,
    root 0x121, subw 0x0, time 12676080, (400,562), root:(951,809),
    state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
    XmbLookupString gives 1 bytes: (1b) "
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1c00001,
    root 0x121, subw 0x0, time 12676205, (400,562), root:(951,809),
    state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
[ESC] festhalten -> [ESC] lösen

Die manpages zu XLookupString und XmbLookupString scheinen, so wie ich das sehe, nur Xlib beschreibungen zur Programmierung zu sein.

Frage ist, woher kommt das 0x1b byte bei [strg]+[3] und wie schaltet man es ab :confused:
 
Zuletzt bearbeitet:
Häng mit dem Prob immer noch in der Luft.

Durch zufall stty(8) gefunden, hiermit werden die Befehle [strg]+<buchstabe>, allerdings die Zahlen werden dort nicht belegt.

Hab noch mal meine alten Posts gelesen, andere als meine scheinen ja zu diesem Thema die Ausnahme *g*, und mich irgendwie gefragt ob die Taste 4 auch ESC respektive 0x1b liefert, wenn man auf Taste 4 mit xmodmap keysym 3 legt.

Code:
xmodmap -e "keysym 4 = 3"
Code:
KeyPress event, serial 30, synthetic NO, window 0x1a00001,
    root 0x121, subw 0x0, time 9466897, (59,289), root:(1108,320),
    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 30, synthetic NO, window 0x1a00001,
    root 0x121, subw 0x0, time 9467994, (58,288), root:(1107,319),
    state 0x14, keycode 13 (keysym 0x33, 3), same_screen YES,
    XKeysymToKeycode returns keycode: 12
    XLookupString gives 1 bytes: (1b) "
    XmbLookupString gives 1 bytes: (1b) "
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1a00001,
    root 0x121, subw 0x0, time 9468305, (58,288), root:(1107,319),
    state 0x14, keycode 13 (keysym 0x33, 3), same_screen YES,
    XKeysymToKeycode returns keycode: 12
    XLookupString gives 1 bytes: (1b) "

KeyRelease event, serial 30, synthetic NO, window 0x1a00001,
    root 0x121, subw 0x0, time 9468707, (58,288), root:(1107,319),
    state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:
Und tatsächlich, dieser XLookupString oder was auch immer wird mit übernommen, womit dann [Strg]+[4] auch ein ESC respektive 0x1b liefert.

Also wieder an dem Punkt: Lösung liegt irgendwo in einer Keymap/-sym/-code, was auch immer bzw, X11 interna. So wie ich das im mom sehe bzw. überlicken kann scheinen an dieser Stelle kbdcontrol(8) (sowieso nur Terminal), stty(8) oder xmodmap(8) nicht weiter zu helfen.

Jemand noch Ideen, so langsam fällt mir auch echt nichts mehr ein. :confused:
 
Zurück
Oben