Wherefore art thou Delete?

I had a problem. I had just loaded a new computer with VA 6.2.1 (which is pretty much the same as RedHat 6.2) and my boss was having trouble with his backspace key.

Before, he had no trouble in a RedHat 6.0 intallation. However, in a RedHat 6.2 xterm, his backspace key was generating some bogus escape sequence (^[[3~ rather than ^H). However, the Backspace key generated the Backspace keysym in xev.

To make a long story short, it was an interaction between Exceed, the RedHat 6.2 Xmodmap (which included a binding specific to XFree86 and conflicts with other X servers, ) and the RedHat 6.2 app-defaults for XTerm which include the following little land-mine:

*VT100*translations:    #override \
                        Delete:    string(0x1b) string("[3~")  \n\

I also discovered that in the text console of a RedHat 6.x box that Backspace generates ^? (delete) and Delete generates ^[[3~ (look familiar?). After a little investigation I discovered that this odd little sequence is called Remove.

It was at this point that I decided that this was not a mistake. Instead, I concluded that there was a vast conspiracy to introduce user confusion by obfuscating the keyboard.

bugs

I decided to visit the RedHat bugzilla pages (since this was clearly outside of VA's control). I searched for "backspace" in the summary for all bugs (even closed or resolved).

The result was a sad chronicle of confusion.

It all stems from one fatally flawed premise:

backspace should remove characters before the cursor, and delete should remove characters after the cursor

bug 791
``I think that redhat linux should at least let it be an option to have Backspace and Delete keys work like most people are used to, i.e. that Backspace removes the previous character and Delete removes the next. Most people don't want to mess around with all sorts of things like xmodmap, .inputrc etc. to get it working. '' ...
Memo peasant: ``most people'' obviously doesn't include the people weaned on UNIX who ported all their toys to Linux in the first place.
bug 972
bug 5446
bug 15687

general malfunctions caused by this hackery

interoperability problems

fundamental problem

Unix has two "remove character backward" keys.

list of root problems

There are a number of problems which collide to give us our current clusterfuck. It's the last two that cause conflict.

Bob's proposed solution

I am firmly in the camp that Linux is UNIX and should work like other UNIX-s. I consider this current attempt to turn Backspace into Delete and Delete into Remove (can anyone name for me a terminal that has a Remove key?) a horribly misguided quest.

However, there is room for compromise.

The UNIX veterans are affected by this conspiracy when they use command-line apps: toys that interact with ttys. Therefore, give the command line and cooked I/O the convention that Backspace is ^H and Delete is ^?. This is the way Kernigan and Pike would have wanted it.

The PC folks are used to their GUI apps where Backspace is "remove character backward" and Delete is "remove character forward". Design this into X Windows apps which do not deal with ^H and ^?, but instead deal with the keysyms Backspace and Delete.

Yes, the peasants will get confused when they go to the command line and discover there's UNIX behind the scenes, but they don't belong at the command line unless they know UNIX.

What you should not be doing is hacking the keyboard and ttys to change the definitions of Backspace and Delete that have served UNIX for decades. Leave cooked I/O alone.


[RF]

Back to White Hot Lesbo Action!

Robert Forsman <thoth@purplefrog.com>