home *** CD-ROM | disk | FTP | other *** search
- Date: Fri, 11 Nov 1994 16:41:22 -0500
- From: S. Lee <sl14@crux5.cit.cornell.edu>
- To: comp-os-linux-announce@uunet.uu.net
- Newgroups: comp.os.linux.announce, comp.os.linux.help, comp.os.linux.misc
- Subject: Backspace Mini-HOWTO
-
- The Linux BackSpace Mini-HOWTO
- by Stephen Lee
- $Id: Backspace-Mini-HOWTO,v 1.0 1994/11/11 21:37:05 slee Rel $
-
- ===============
- 0. Introduction
- ===============
-
- This Mini-HOWTO document describes setting up the keyboard to handle the
- <BackSpace> and <Delete> keys properly. It has been annoying to me that
- those keys had not work consistently across different programs, so I took
- one afternoon and tried to fix all that. Here I document my experience so
- others would not need to go through the same tedious cycle I did.
-
- I'm using Slackware 2.0.0, so pathnames to files might be different from
- yours if you are using a different distribution.
-
- ==============
- 1. Terminology
- ==============
-
- <BackSpace>
- The key on the keyboard marked "Backspace" or "<--" (not to
- confused with the left arrow on the cursor pad or keypad).
-
- <Delete>
- The key on the cursor pad marked "Delete", or the key marked "Del"
- on the numeric keypad when NumLock is off.
-
- BS
- ASCII character 0x08, or control-h.
-
- DEL
- ASCII character 0x7F.
-
- ^D
- ASCII character 0x04, or control-d.
-
- [BackSpace]
- A X11 keysym.
-
- [Delete]
- Another X11 keysym.
-
- ===============
- 2. Basic Issues
- ===============
-
- I assume you came from the DOS world like I did, and is used to the
- mapping of function that <BackSpace> deletes character to the left of the
- cursor and <Delete> deletes character on top of the cursor.
-
- The most intuitive mapping is <BackSpace> -> BS and <Delete> -> DEL. This
- is fine unless you want to use EMACS. EMACS map control-h to its help
- function, which, under ASCII, is unfortunately BS. So each time you want
- to erase a character backwards, you invoke the help system. (Hint: to
- remove the question if you're not that far, press <control-g>. if you have
- pressed other keys, you might need to press <ctrl-x> then <1> to remove
- the help screen.) By the way, DEL under EMACS deletes BACKWARDS, like
- what you'd expect for BS.
-
- One choice is to remap the keys under EMACS. Unfortunately you'll lose the
- "<control-h> = help" mapping, and you'll have to do that to every EMACS you
- want to access, which is a pain.
-
- So, I decided to map <BackSpace> -> DEL and <Delete> -> ^D. This would work
- for both EMACS and csh, and a EMACS across a telnet or rlogin connection.
- Now you can use the <Delete> key for editing the command line also! (Before
- it does the same thing as <BackSpace>.)
-
- =============================================
- 3. How to do it under text mode (non-X setup)
- =============================================
-
- You need to have the "loadkeys" program from the kbd package. I believe
- you should have it if you're running Slackware.
-
- Another file you want is /usr/lib/kbd/keytables/*.map. Choose one that is
- closest to your setup (it would be /usr/src/linux/drivers/char/defkeymap.map
- if you have the kernel source).
-
- The keycodes are 14 <BackSpace>, 83 <Keypad Del> , 111 <Cursor pad Delete>.
- If you have slackware you should already have the following:
-
- keycode 14 = Delete Delete
- alt keycode 14 = Meta_Delete
-
- keycode 83 = KP_Period
- altgr control keycode 83 = Boot
- control alt keycode 83 = Boot
-
- keycode 111 = Remove
- altgr control keycode 111 = Boot
- control alt keycode 111 = Boot
-
- string Remove = "\033[3~"
-
- All you need to do is to replace the last line with
-
- string Remove = "\004"
-
- and now you have both mapping under text mode after you run loadkeys:
-
- Nekomi% loadkeys whatever.map
- ^^^^^^^
- Shell prompt
-
- Note that this command changes the mapping for ALL Virtual Consoles. You
- might want to put this in your /etc/rc.d/rc.local so that it is run every
- time you reboot.
-
- You'll need to make sure that Linux know which key your <BackSpace> is, so
- do the following on your shell prompt:
-
- Nekomi% stty erase '^?'
- ^^
- can be "^" then "?", or
- type <control-v><BackSpace>
-
- You might want to put it in your ~/.login or ~/.profile.
-
- =======================================
- 4. How to do it under XFree86 (General)
- =======================================
-
- I'm using XFree86 2.1, but the procedure should be the same for other
- versions.
-
- You need xmodmap which should be included with your XFree86.
-
- We want to map <BackSpace> -> [BackSpace] and <Delete> -> [Delete] here.
- So put the following in your .xinitrc:
-
- xmodmap -e "keycode 22 = BackSpace"
- xmodmap -e "keycode 107 = Delete"
-
- Alternatively, you might generate a map file from your whatever.map using
- /usr/lib/kbd/keytables/mk_modmap:
-
- mk_modmap whatever.map > whatever.xmap
-
- I think you need to remove all the "compose" command in the output, then
- you can use
-
- xmodmap whatever.xmap
-
- to load the keymap. Note that <BackSpace> would be mapped to [Delete]
- this way (if you use the same whatever.map for text mode), so be sure to
- edit whatever.xmap for keycode 22 and 107.
-
- ===========================
- 4.1 Setting up GNU EMACS 19
- ===========================
-
- GNU EMACS 19 has some X support built in. To make [Delete] work the way
- you expect, put this in your ~/.emacs file:
-
- (cond (window-system
- (define-key function-key-map [delete] "\C-d")
- ))
-
- while you are at it, you can map more keys like [F1] etc. I think most
- of the keypad is already set up so you can use <Home> <End> <PgUp> <PgDn>
- etc. already.
-
- Now you can use both <BackSpace> and <Delete>, and <control-h> will bring
- up the help.
-
- You can find out want keycode and keysym a key sends using "xev" from
- your shell under X.
-
- ====================
- 4.2 Setting up xterm
- ====================
-
- "xterm" and "color_xterm" has their own mappings different from the text
- mode settings. To change them, put this in your ~/.Xdefaults:
-
- .XTerm.VT100.Translations: #override <Key>BackSpace: string(0x7F)\n\
- <Key>Delete: string(0x04)\n\
- <Key>Home: string(0x1b) string("[1~")\n\
- <Key>End: string(0x1b) string("[4~")
-
- Remember to restart your xterm and use the "stty erase '^?'" command.
-
- This maps [BackSpace] -> DEL and [Delete] -> ^D, just like in text mode
- so it works for non-X EMACS (try "emacs -nw") or across telnet/rlogin.
-
- It works for most xterm-derived terminals as well, like color_xterm or
- kterm.
-
- This also changes the mapping for [Home] and [End] so they send different
- codes. So I can use them in "less" :)
-
- (Hint: look up the man page for lesskey(1) for setting up cursor pad keys
- for "less". I think they are already set up under Slackware)
-
- ==============
- 5. Misc. stuff
- ==============
-
- - I don't know how to change the mapping under "rxvt".
-
- - when you telnet/rlogin to a remote UNIX machine, make sure it knows
- your setting by issuing "stty erase '^?'".
-
- - although csh/tcsh treats BS and DEL the same way, other programs don't.
- So your mapping might seem to work under csh/tcsh but you get wierd
- stuff like ^? under some programs. Solution: remember the "stty"
- command above.
-
-
-
-