The situation under X is not really different. There is just a
different layer, that is, the X window system translates the scancodes into
its own keysyms, which are much more varied and precise than the console
ones, and feeds them into applications (by the way, this is the reason why
XEmacs is not plagued by the problem: X
translates keycode 22 to keysym BackSpace and keycode 107
to keysym Delete, and then the user can easily assign to
those keysyms the desired behaviour). Of course, a terminal emulator
program (usually a VT100 emulator in the X world) must translate the
X keysyms into ASCII sequences, so we are again in our sore
business.
More in detail, usually xterm behaves
exactly like the console (i.e., it emits the same ASCII
sequences), but, for instance, gnome-terminal in
Red Hat <7.0 or ≥7.1 emits BS for
Backspace and DEL for
Delete. The real fun starts when you realise that by
default they use the same terminal-database entry, so
the fact that the kbs capability is associated to an
ASCII DEL makes all correctly behaving
applications produce the same behaviour for the Backspace
and Delete keys in
gnome-terminal. The simple statement
can solve the problem in this case for
correctly behaving applications. Well, not always, because your system
could lack an entry in the terminal database named
gnome, in particular if it is not very up-to-date.
In any case, this is not always a solution: if, for instance, you
have a Red Hat 7.0 distribution, your
gnome-terminal behaves like a console. But
beware: if you upgraded your desktop using the Helix distribution, then
your gnome-terminal behaves like a pre-7.0 Red
Hat.
Just to make easier the following discussion, let us define
standard a VT100 emulator behaving like the console,
and deviant one that emits BS for
Backspace and DEL for
Delete.[1]
Thus, for instance, xterm has always been
standard in the Debian distribution, while it switched a couple of times
from standard to deviant and viceversa in Red Hat; the behaviour of
gnome-terminal is even more erratic. See Section 8 for some information on how to turn a deviant terminal
into a standard one.