[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Debian]: Backspace/Delete war: [Re: vim]



Nils Naumann hat gesagt: // Nils Naumann wrote:

> 
> Frank Barknecht <barknech@ph-cip.uni-koeln.de> writes:
> 
> > Nun aber zum BackSpace/Delete-Problem. 
> 
> Das BS/Del Problem ist einfach mit dem Eintrag:
> 
> if [ "$TERM" = "xterm" ]; then
>   stty erase "^H"
> fi
> 
> in der  .bashrc zu lösen. Wobei  es sicherlich ein Fehler  ist, daß es
> nicht ohne diesen Eintrag funktioniert. Auf der console ist erase ^?.
>
> Bei  Del ist  das  Problem ein  anderes.  Das funktioniert  eigentlich
> überall,  aber beim  vim im  xterm ändert  diese Taste  die Groß-  und
> Kleinschreibung von Buchstaben.
>

So einfach  ist das Problem m.E.  eben *nicht* zu lösen.  Vim oder Emacs
sind dafür  klassische Beispiele. Beide Anwendungen  können in dreierlei
Kontext aufgerufen  werden: Linux-Console,  innerhalb eines  xterms oder
als eigenes X-Fenster. Es ist  gewünscht, daß alle Tastendrucke in jedem
Kontext das  gleiche Ergebnis  liefern, das  nenne ich  mal "Konsistente
Keyboard  Konfiguration"  (KKK).  Leider  müssen  die  Anwendungen  dann
(in  ihren Konfigurationsdateien)  so  eingestellt werden,  daß sie  mit
unterschiedlichen Signalen vom Betriebssystem her klarkommen.

* Ein kleiner technischer Ausflug *

   Am Anfang steht der Tastendruck,  etwa der "Pfeil nach oben". Dadurch
   wird ein sogenannter keycode erzeugt,  eine simple Zahl, die man sich
   mit  dem  Kommando  showkey  auf der  Linux-Console  anzeigen  lassen
   kann.  Für  unser Beispiel  ist  das  bei  mir  die 103.  Jeder  Zahl
   wird  nun durch  eine tabellenartige  Datei  - die  keytables -  eine
   Bedeutung  zugewiesen. Eine  solche keyboard  translation table  wird
   beim Start des Systems geladen.  loadkeys lädt als keytable die Datei
   /etc/kbd/default.map,  die bei  deutschen Debian-Usern  üblicherweise
   eine Kopie der  keytables de-latin1.map oder de-latin1-nodeadkeys.map
   ist.

   In dieser  Karte wird  der "103" nun  ein symbolischer  Name, nämlich
   "Up" gegeben.  Eine Anwendung auf  der Console empfängt nur  das "Up"
   und verhält sich entsprechend.

   Unter  X-Windows  ist  die  Sache komplizierter.  Hier  empfängt  der
   X-Server bei "Pfeilnachoben"  den keycode 98 und ordnet  ihn über die
   sogenannte Xmodmap dem entsprechenden Symbol  zu. Zum Glück ist es im
   Beispiel ebenfalls  "Up". Ein  xterm-Fenster empfängt das  Symbol und
   wandelt es wieder um: diesmal in die Escape-Sequenz ^[[A

Vim muß also je nach Kontext die  Aktion "Gehe nach oben" einmal aus dem
symbolischen Namen "Up"  (wenn er als eigenständige  X-Anwendung oder in
der Console  läuft) und einmal  aus der Escape-Sequenz  ^[[A fabrizieren
(wenn er im xterm läuft).

Zum  Problem  wird  es,  wenn  -  wie  bei  den  klassischen  keytables 
de-latin1... - der Delete-Key (der kleine bei den Positionierungstasten 
mit  keycode 111)  auf  der  Console das  Symbol  "Remove" sendet,  der 
Backspace-Key (Code  14) das Symbol  "Delete" und unter X  wieder alles 
anders ist.                                                             

Hier Konsistenz reinzubringen, erfordert wirklich tiefere Eingriffe als 
ein bloßes  
$ stty erase "^H" 
denn einige Programme  erwarten von der Backspace-Taste  auch das Symbol
"Backspace"  (etwa Netscape)  und von  Delete "Delete",  andere hingegen
können mit "Delete" oder gar "Remove" nichts richtiges anfangen.

Und wo  man schon am  Konfigurieren ist,  warum dann nicht  gleich Pos1,
Ende etc. korrekt einrichten.

Bei mir jedenfalls schickt die Entf-Taste inzwischen "Delete", Backspace
schickt "Backspace", das erfordert u.a. auch ein 'stty erase "^H"'.

Mein   Vim   im  xterm   wandelt   beim   Entf-Tastendruck  *nicht*   in
Großbuchstaben, das  ist Vergangenheit. Dafür  sind hier, aber  auch nur
hier, BackSpace  und Delete  vertauscht, was  ich für  einen Bug  in Vim
halte, bzw.  weiß ich nicht,  wie ich  es beheben könnte  (":fixdel" hat
nicht geholfen, vielleicht Dir?) Emacs verhält sich *völlig* konsistent,
wohl  der  größte  Erfolg  der  ganzen Aktion  (die  auch  Eingriffe  in
Lisp-Dateien erforderte).

M.E. müssen für eine konsistente Keyboard-Konfiguration alle Anwendungen
angepaßt werden,  allerdings auf die jeweiligen  Keytables, Xmodmaps und
Xresourcen. Deshalb  halte ich das  Debian Keyboard Projekt auch  für so
wichtig, gleichzeitig aber auch für eine sehr knifflige Angelegenheit.

-- 
   	              		<a href="http://www.einblick.de/";>
  Frank Barknecht		Das Koelner Stadt- und Unimagazin
  >-------------<		</a>
------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <your_email_address>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     422


Reply to: