From: Christian Weisgerber (naddy_at_mips.inka.de)
Date: 10. Apr 2001
martin haller <dielheim_at_martin-haller.de> wrote:
> Mein xterm hier reagiert auf M-Backspace nicht wie gewünscht (sollte
> wort löschen), sondern gibt ein "y" mit "ü"-strichen aus. Wie kann
> ich sowas umstellen?
> Ich hab schon stty(1) angeschaut und den Parameter werase probiert
> aber das hilft nichts (oder mache ich da was falsch?)
(Da sich sonst niemand erbarmt...)
werase hat damit überhaupt nichts zu tun. werase stellt ein
Löschzeichen für die TTY-Discipline ein, das ist der »Editor«, den
du z.B. bei
$ cat >/dev/null
...
zur Verfügung hast. Normalerweise ist werase ^W. Shells mit eigenen
Kommandozeileneditoren kümmern sich nicht weiter um werase.
Du gibst oben Meta in Emacs-Notation an. »Meta« kann verschieden
implementiert sein. Ursprünglich (in Stallmanns ITS-Zeiten), gab
es offenbar Terminals, bei denen eine Taste META das achte Bit
eines Zeichens gesetzt hat, z.B. 'a' (0x61) -> M-a (0xE1). Nun
hatten aber nicht alle Terminals eine solche Taste. Daher wurde
für Emacs eine Ersatzeingabe geschaffen: »Meta« konnte alternativ
auch durch das vorangestelltes Zeichen Esc (0x1B) signalisiert
werden.
Heute im Zeitalter von 8-Bit-Zeichensätzen ist eine Realisierung
von Meta durch Setzen des achten Bits zur Befehlseingabe unbrauchbar.
Und genau das erlebst du: Deine Rubout-Taste liefert ^? (0x7F) und
M-Rubout ist entsprechend 'ÿ' (0xFF). Es gibt Konsolentreiber, die
eine Meta-Taste anbieten, und wo man einstellen kann, ob sie das
achte Bit setzen oder ein Esc voranstellen soll. Auch bei xterm
kann man das.
Unter X11 ist die Situation etwas kompliziert und gemeinhin
unverstanden. Wenn man eine Taste drückt, erzeugt das an einem
X-Display kein Zeichen wie an einem Terminal, sondern ein Keysym.
Gegebenenfalls parallel gedrückte »Modifier« (Control, ..., Meta)
werden begleitend in einer Bitmaske übermittelt. Erst eine Applikation
kann aus Keysym+Modifiern ein Zeichen machen. Auch xterm ist eine
solche. Wenn du im xterm M-a eingibst, dann bekommt es vom X-Server
<a>{Meta}¹ übermittelt. Was für ein Zeichen xterm daraufhin an das
Pseudo-TTY weiterreicht, ist Konfigurationssache.
xterm bietet für die Behandlung von Meta zwei Ressourcen:
- Das klassische »eightBitInput«:
true: setzt achtes Bit (Default)
false: vorangestelltes Esc
- Das neuere »metaSendsEscape«.
true: vorangestelltes Esc (Default)
false: Behandlung gemäß eightBitInput
metaSendsEscape ist erst ab xterm #122 (entsprechend XFree86 3.9.16f)
verfügbar.
Siehe auch xterm(1).
¹) Genau genommen sind Modifier wie Meta verschiedenen Modifier-Ebenen
zugeordnet, vgl. die Ausgabe von »xmodmap -pm«, und es wird dann
sowas wie {mod1} übergeben.
-- Christian "naddy" Weisgerber naddy_at_mips.inka.de
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET