The Linux keyboard and console HOWTO: Delete and Backspace (2024)

NextPreviousContents

5. Delete and Backspace

Getting Delete and Backspace to work just right is nontrivial,especially in a mixed environment, where you talk to console,to X, to bash, to emacs, login remotely, etc.You may have to edit several configuration files to tell allof the programs involved precisely what you want.On the one hand, there is the matter of which keys generatewhich codes (and how these codes are remapped by e.g. kermitor emacs), and on the other hand the question of what functionsare bound to what codes.

People often complain `my backspace key does not work', as if thiskey had a built-in function `delete previous character'.Unfortunately, all this key, or any key, does is producing a code,and one only can hope that the kernel tty driver andall application programs can be configured such thatthe backspace key indeed does function as a `delete previous character'key.

Most Unix programs get their tty input via the kernel tty driverin `cooked' mode, and a simple stty command determines theerase character. However, programs like bash and emacsand X do their own input handling, and have to be convincedone-by-one to do the right thing.

5.1 How to tell Unix what character you want to use to delete the last typed character

 % stty erase ^?
If the character is erased, but in a funny way, then something iswrong with your tty settings. If echoprt is set, then erased charactersare enclosed between \ and /.If echoe is not set, then the erase char is echoed(which is reasonable when it is a printing character, like #).Most people will want stty echoe -echoprt. Saying stty sanewill do this and more. Saying stty -a shows your current settings.How come this is not right by default? It is, if you use the rightgetty.

Note that many programs (like bash, emacs etc.) have their ownkeybindings (defined in ~/.inputrc,~/.emacs etc.) and are unaffected by the settingof the erase character.

The standard Unix tty driver does not recognize a cursor, or keys(like the arrow keys) to move the current position, and hence does nothave a command `delete current character' either. But for exampleyou can get bash on the console to recognize the Delete key by putting

 set editing-mode emacs "\e[3~":delete-char
into ~/.inputrc.

`Getty used to do the right thing with DEL and BS but is broken now?'

Earlier, the console driver would do BS Space BS(\010\040\010)when it got a DEL (\177).Nowadays, DEL's are ignored (as they should be,since the driver emulates a vt100). Get a better getty, i.e.,one that does not output DEL.

`Login behaves differently at the first and second login attempts?'

At the first attempt, you are talking to getty. At the second attempt,you are talking to login, a different program.

5.2 How to tell Linux what code to generate when a key is pressed

On the console, or, more precisely, when not in (MEDIUM)RAW mode, use

 % loadkeys mykeys.map
and under X use
 % xmodmap mykeys.xmap
Note that (since XFree86-2.1) X reads the Linux settings of the keymapswhen initialising the X keymap. Although the two systems are not100% compatible, this should mean that in many cases the use ofxmodmap has become superfluous.

For example, suppose that you would like the Backspace keyto send a BackSpace (Ctrl-H, octal 010) and the grey Delete keya DEL (octal 0177). Add the following to /etc/rc.local(or wherever you keep your local boot-time stuff):

 /usr/bin/loadkeys << EOF keycode 14 = BackSpace keycode 111 = Delete EOF
Note that this will only change the function of these keyswhen no modifiers are used. (You need to specify a keymaps lineto tell which keymaps should be affected if you want to changebindings on more keymaps.)The Linux kernel default letsCtrl-Backspace generate BackSpace - this is sometimes usefulas emergency escape, when you find you can only generate DELs.

The left Alt key is sometimes called the Meta key, and bydefault the combinations AltL-X are bound to the symbol MetaX.But what character sequence is MetaX?That is determined (per-tty) by the Meta flag, set by the commandsetmetamode. The two choices are: ESC X or X or-ed with 0200.

Many distributions have a loadkeys command somewhere in thebootup sequence. For example, one may have the name of the desiredkeymap in /etc/sysconfig/keyboard and the loadkeyscommand that loads it in /etc/rc.d/init.d/keytable.Or one may have the actual default keymap in /etc/default.keytaband the loadkeys command that loads it in /etc/rc.d/boot.Etc. Instead of adding a local modification to the default, one canof course change the default by editing the default keymap or changingthe name of the keymap to be loaded at boot time. Note that loadkeysitself has default keymap defkeymap.map located somewhere under/usr/lib/kbd or /usr/share/kbd (just like all otherkeymaps) and this may not yet be available in single user boot before/usr has been mounted.

`How do I get a dvorak keyboard?'

The command

 % loadkeys dvorak
will give you a dvorak layout, probably by loadingsomething like /usr/lib/kbd/keymaps/i386/dvorak/dvorak.map.gz.Under X, put
 XkbLayout "dvorak"
in XF86Config.

`Why doesn't the Backspace key generate BackSpace by default?'

(i) Because the VT100 had a Delete key above the Enter key.

(ii) Because Linus decided so.

5.3 How to tell X to interchange Delete and Backspace

 % xmodmap -e "keysym BackSpace = Delete" -e "keysym Delete = BackSpace"
Or, if you just want the Backspace key to generate a BackSpace:
 % xmodmap -e "keycode 22 = BackSpace"
Or, if you just want the Delete key to generate a Delete:
 % xmodmap -e "keycode 107 = Delete"
(but usually this is the default binding already).

5.4 How to tell emacs what to do when it receives a Delete or Backspace

Put in your .emacs file lines like

 (global-set-key "\?" 'help-command) (global-set-key "\C-h" 'delete-backward-char)
Of course you can bind other commands to other keys in the same way.Note that various major and minor modes redefine keybindings.For example, in incremental search mode one finds the code
 (define-key map "\177" 'isearch-delete-char) (define-key map "\C-h" 'isearch-mode-help)
This means that it may be a bad idea to use the above twoglobal-set-key commands. There are too many places wherethere are built-in assumptions about Ctrl-H = help and DEL = delete.That doesn't mean that you have to setup keys so that Backspacegenerates DEL. But if it doesn't then it is easiest to remapthem at the lowest possible level in emacs.

5.5 How to tell emacs to interchange Delete and Backspace

Put in your .emacs file lines

 (setq keyboard-translate-table (make-string 128 0)) (let ((i 0)) (while (< i 128) (aset keyboard-translate-table i i) (setq i (1+ i)))) (aset keyboard-translate-table ?\b ?\^?) (aset keyboard-translate-table ?\^? ?\b)
Recent versions of emacs have a function keyboard-translateand one may simplify the above to
 (keyboard-translate ?\C-h ?\C-?) (keyboard-translate ?\C-? ?\C-h)
Note that under X emacs can distinguish between Ctrl-h and theBackspace key (regardless of what codes these produce on the console),and by default emacs will view the Backspace key as DEL(and do deletion things, as bound to that character, rather thanhelp things, bound to Ctrl-H). One can distinguish Backspace and Delete,e.g. by
 (global-unset-key [backspace] ) (global-set-key [backspace] 'delete-backward-char) (global-unset-key [delete] ) (global-set-key [delete] 'delete-char)

5.6 How to tell kermit to interchange Delete and Backspace

Put in your .kermrc file the lines

 set key \127 \8 set key \8 \127

5.7 How to tell xterm to interchange Delete and Backspace

XTerm*VT100.Translations: #override\n\ <KeyPress> BackSpace : string(0x7f)\n\ <KeyPress> Delete : string(0x08)\n

5.8 How to tell xterm about your favourite tty modes

Normally xterm will inherit the tty modes from its invoker.Under xdm, the default erase and kill characters are # and @,as in good old Unix Version 6.If you don't like that, you might put something like

 XTerm*ttymodes: erase ^? kill ^U intr ^C quit ^\ eof ^D \ susp ^Z start ^Q stop ^S eol ^@
in /usr/lib/X11/app-defaults/XTerm or in$HOME/.Xresources, assuming that you have a line
 xrdb -merge $HOME/.Xresources
in your $HOME/.xinitrc or $HOME/.xsession.

5.9 How to tell non-Motif X applications that the Del key deletes forward

Put

*Text.translations: #override \ ~Shift ~Meta <Key>Delete: delete-next-character()
into .Xresources to make non-Motif X applications such asxfig, xedit, etc., work correctly. (Daniel T. Cobra)

5.10 How to tell xmosaic that the Backspace key generates a DEL

Putting

 *XmText.translations: #override\n\ <Key>osfDelete: delete-previous-character() *XmTextField.translations: #override\n\ <Key>osfDelete: delete-previous-character()
in your $HOME/.Xdefaults or$HOME/.Xresources helps.(What file? The file that is fed to xrdb, for examplein .xinitrc.)

The netscape FAQ, however, says:

 Why doesn't my Backspace key work in text fields? By default, Linux and XFree86 come with the Backspace and Delete keys misconfigured. All Motif programs (including, of course, Netscape Navigator) will malfunction in the same way. The Motif spec says that Backspace is supposed to delete the previous character and Delete is supposed to delete the following character. Linux and XFree86 come configured with both the Backspace and Delete keys generating Delete. You can fix this by using any one of the xmodmap, xkeycaps, or loadkeys programs to make the key in question generate the BackSpace keysym instead of Delete. You can also fix it by having a .motifbind file; see the man page for VirtualBindings(3). Note: Don't use the *XmText.translations or *XmTextField.translations resources to attempt to fix this problem. If you do, you will blow away Netscape Navigator's other text-field key bindings.

5.11 A better solution for Motif-using programs, like netscape

Ted Kandell ([email protected]) suggests the following:

Somewhere in your .profile add the following:

stty erase ^H
If you are using bash, add the following lines to your .inputrc:
"\C-?": delete-char"\C-h": backward-delete-char
Add the following lines to your .xinitrc file:
xmodmap <<-EOFkeycode 22 = BackSpace osfBackSpacekeycode 107 = DeleteEOF# start your window manager here, for example:#(fvwm) 2>&1 | tee /dev/tty /dev/consolestty sanestty erase ^Hloadmap <<-EOFkeycode 14 = BackSpacekeycode 111 = DeleteEOF

This will definitely work for a PC 101 or 102 key keyboardwith any Linux/XFree86 layout.

The important part to making Motif apps like Netscape work properlyis adding osfBackSpace to keycode 22 in addition to BackSpace.

Note that there must be spaces on either side of the = sign.

5.12 What about termcap and terminfo?

When people have problems with backspace, they tend to look at their termcap(or terminfo) entry for the terminal, and indeed, there does exist a kb(or kbs) capability describing the code generated by the Backspace key.However, not many programs use it, so unless you are having problems with oneparticular program only, probably the fault is elsewhere.Of course it is a good idea anyway to correct your termcap (terminfo) entry.See also below under "The TERM variable".

5.13 A complete solution

There are many possibilities to get a functioning system.Can't you give one complete set of settings that works?

One way of getting a setup that works in all contextsis to have the Backspace key generate DEL when on theconsole (or xterm), and BackSpace when under X.Maybe that is most convenient - there are too many X utilitiesthat expect BackSpace, and emacs on the console or xtermexpects DEL, while emacs under X can distinguish [BackSpace]from Ctrl-H and does the right thing.

What is needed?No loadkeys changes, since the Backspace key already generatesDEL by default. No stty settings, they are OK by default.No X settings, they are OK by default.One just has to tell xterm that the Backspace key should generate DEL:put

XTerm*VT100.Translations: #override\n\ <KeyPress> BackSpace : string(0x7f)\n\
in .Xresources, and
xrdb -merge .Xresources
in .xinitrc, and you are settled.

For a much more extensive discussion of these things, andalternative solutions, seeAnne Baretta's page.

NextPreviousContents
The Linux keyboard and console HOWTO: Delete and Backspace (2024)
Top Articles
Exploring Different Types of Insurance and Their Importance — Investors Diurnal Finance Magazine
10 Stocking Stuffers for RV Tailgaters - RV Tailgate Life
Riverrun Rv Park Middletown Photos
Pet For Sale Craigslist
Chris Provost Daughter Addie
Promotional Code For Spades Royale
Uti Hvacr
Holly Ranch Aussie Farm
Whiskeytown Camera
Bustle Daily Horoscope
2021 Tesla Model 3 Standard Range Pl electric for sale - Portland, OR - craigslist
Jscc Jweb
The Connecticut Daily Lottery Hub
TS-Optics ToupTek Color Astro Camera 2600CP Sony IMX571 Sensor D=28.3 mm-TS2600CP
Bfg Straap Dead Photo Graphic
Scenes from Paradise: Where to Visit Filming Locations Around the World - Paradise
Army Oubs
Georgetown 10 Day Weather
Wbiw Weather Watchers
Dr Ayad Alsaadi
Food Universe Near Me Circular
Deshuesadero El Pulpo
Jcp Meevo Com
Cylinder Head Bolt Torque Values
Cosas Aesthetic Para Decorar Tu Cuarto Para Imprimir
Yayo - RimWorld Wiki
031515 828
35 Boba Tea & Rolled Ice Cream Of Wesley Chapel
Ofw Pinoy Channel Su
O'reilly Auto Parts Ozark Distribution Center Stockton Photos
Blackstone Launchpad Ucf
Justin Mckenzie Phillip Bryant
A Man Called Otto Showtimes Near Carolina Mall Cinema
Steven Batash Md Pc Photos
2016 Honda Accord Belt Diagram
Ket2 Schedule
Bbc Gahuzamiryango Live
Los Garroberros Menu
Geology - Grand Canyon National Park (U.S. National Park Service)
Mcgiftcardmall.con
Mytime Maple Grove Hospital
Registrar Lls
Mychart Mercy Health Paducah
Ups Authorized Shipping Provider Price Photos
Southwest Airlines Departures Atlanta
Iman Fashion Clearance
Costner-Maloy Funeral Home Obituaries
Smoke From Street Outlaws Net Worth
Lux Funeral New Braunfels
2487872771
Okta Hendrick Login
Coors Field Seats In The Shade
Latest Posts
Article information

Author: Ouida Strosin DO

Last Updated:

Views: 6714

Rating: 4.6 / 5 (76 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Ouida Strosin DO

Birthday: 1995-04-27

Address: Suite 927 930 Kilback Radial, Candidaville, TN 87795

Phone: +8561498978366

Job: Legacy Manufacturing Specialist

Hobby: Singing, Mountain biking, Water sports, Water sports, Taxidermy, Polo, Pet

Introduction: My name is Ouida Strosin DO, I am a precious, combative, spotless, modern, spotless, beautiful, precious person who loves writing and wants to share my knowledge and understanding with you.