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

Re: Backspace and delete



Christian:
> If attached your initial proposal below. Please check if this is the
> correct proposal and if it's complete.

Pretty much, yes.  I've attached a revised version which takes into
account the recent comments.

Ian.

----------cut-here--------------

What we want is:
 * `<--' always deletes the character to the left of the cursor.
 * `Delete' always deletes to the right.
 * `Control'+`H' produces help in Emacs, as before.
We want this to be true for the console, for X, and even if you use
rlogin or telnet to get from one system to another.

What we should do is the following:
 * `<--' generates KB_Backspace in X.
 * `Delete' generates KB_Delete in X.
 * X translations are set up to make KB_Backspace generate ASCII DEL,
   and to make KB_Delete generate ESC [ 3 ~ (this is the vt220 escape
   code for the `delete character' key).  This must be done by loading
   the resources using xrdb on all local X displays, not using the
   application defaults, so that the translation resources used
   correspond to the xmodmap settings.
 * The Linux console is configured to make `<--' generate DEL, and
   `Delete' generate ESC [ 3 ~ (this is the case at the moment).
 * X applications are configured so that Backspace deletes left, and
   Delete deletes right.  Motif applications already work like this.
 * stty erase ^? .
 * The `xterm' terminfo entry should have ESC [ 3 ~ for kdch1, just
   like TERM=linux and TERM=vt220.
 * Emacs is programmed to map KB_Backspace or the `stty erase'
   character to delete-backward-char, and KB_Delete or kdch1 to
   delete-forward-char, and ^H to help as always.
 * Other applications use the `stty erase' character and kdch1 for the
   two delete keys, with ASCII DEL being `delete previous character'
   and kdch1 being `delete character under cursor'.

This will solve the problem except for:
 * Some terminals have a <-- key that cannot be made to produce
   anything except ^H.  On these terminals Emacs help will be
   unavailable on ^H (assuming that the `stty erase' character takes
   precedence in Emacs, and has been set correctly).  M-x help or F1
   (if available) can be used instead.
 * Some operating systems use ^H for stty erase.  However, modern
   telnet versions and all rlogin versions propagate stty settings,
   and almost all UNIX versions honour stty erase.  Where the stty
   settings are not propagated correctly things can be made to work by
   using stty manually.
 * Some systems (including previous Debian versions) use xmodmap to
   arrange for both <-- and Delete to generate KB_Delete).  We can
   change the behaviour of their X clients via the same X resources
   that we use to do it for our own, or have our clients be configured
   via their resources when things are the other way around.  On
   displays configured like this Delete will not work, but <-- will.
 * Some operating systems have different kdch1 settings in their
   terminfo for xterm and others.  On these systems the Delete key
   will not work correctly when you log in from a system conforming to
   our policy, but <-- will.

----------cut-here--------------


Reply to: