Penguin
Diff: HowToKeyboardandConsoleHOWTO
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of HowToKeyboardandConsoleHOWTO.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Tuesday, October 26, 2004 10:08:38 am by AristotlePagaltzis
Older page: version 2 Last edited on Friday, June 7, 2002 1:06:53 am by perry Revert
@@ -1,2761 +1 @@
-  
-  
-  
-The Linux keyboard and console HOWTO  
-  
-  
-  
-----  
-  
-!!!The Linux keyboard and console HOWTO  
-  
-!!Andries Brouwer, aeb@cwi.nlv2.12, 2001-09-21  
-  
-  
-----  
-''This note contains some information about the Linux keyboard  
-and console, and the use of non-ASCII characters.  
-It describes Linux 2..  
-  
-  
-''  
-----  
-  
-  
-  
-  
-!!1. Useful programs  
-  
-  
-  
-  
-!!2. Keyboard generalities  
-  
-  
-  
-  
-!!3. Console generalities  
-  
-  
-  
-  
-!!4. Resetting your terminal  
-  
-  
-*4.1 Keyboard hardware reset  
-  
-  
-  
-  
-  
-!!5. Delete and Backspace  
-  
-  
-*5.1 How to tell Unix what character you want to use to delete the last typed character  
-  
-*5.2 How to tell Linux what code to generate when a key is pressed  
-  
-*5.3 How to tell X to interchange Delete and Backspace  
-  
-*5.4 How to tell emacs what to do when it receives a Delete or Backspace  
-  
-*5.5 How to tell emacs to interchange Delete and Backspace  
-  
-*5.6 How to tell kermit to interchange Delete and Backspace  
-  
-*5.7 How to tell xterm to interchange Delete and Backspace  
-  
-*5.8 How to tell xterm about your favourite tty modes  
-  
-*5.9 How to tell non-Motif X applications that the Del key deletes forward  
-  
-*5.10 How to tell xmosaic that the Backspace key generates a DEL  
-  
-*5.11 A better solution for Motif-using programs, like netscape  
-  
-*5.12 What about termcap and terminfo?  
-  
-*5.13 A complete solution  
-  
-  
-  
-  
-  
-!!6. The console character sets  
-  
-  
-  
-  
-!!7. Console switching  
-  
-  
-*7.1 Changing the number of Virtual Consoles  
-  
-  
-  
-  
-  
-!!8. Ctrl-Alt-Del and other special key combinations  
-  
-  
-*8.1 Ctrl-Alt-Del (Boot)  
-  
-*8.2 Other combinations  
-  
-*8.3 X Combinations  
-  
-*8.4 Dosemu Combinations  
-  
-*8.5 Composing symbols  
-  
-*8.6 The !SysRq key  
-  
-*8.7 Problems  
-  
-  
-  
-  
-  
-!!9. How to get out of raw mode  
-  
-  
-  
-  
-!!10. The keyboard LEDs  
-  
-  
-  
-  
-!!11. The TERM variable  
-  
-  
-*11.1 Terminfo  
-  
-  
-  
-  
-  
-!!12. How to make other programs work with non-ASCII chars  
-  
-  
-  
-  
-!!13. X  
-  
-  
-*13.1 What precisely does XFree86-2.1 do when it initializes its keymap?  
-  
-  
-  
-  
-  
-!!14. Unusual keys and keyboards  
-  
-  
-  
-  
-!!15. Examples of use of loadkeys and xmodmap  
-  
-  
-*15.1 `I can use only one finger to type with'  
-  
-*15.2 Sticky keys under X  
-  
-  
-  
-  
-  
-!!16. Changing the video mode  
-  
-  
-*16.1 Instructions for the use of resizecons  
-  
-  
-  
-  
-  
-!!17. Changing the keyboard repeat rate  
-  
-  
-  
-  
-!!18. Scrolling  
-  
-  
-  
-  
-!!19. Screensaving  
-  
-  
-  
-  
-!!20. Screen dumps  
-  
-  
-  
-  
-!!21. Some properties of the VT100 - application key mode  
-  
-  
-  
-  
-!!22. Hardware incompatibility  
-  
-  
-  
-  
-!!23. Copyright  
-----  
-  
-!!1. Useful programs  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-The following packages contain keyboard or console related programs.  
-  
-  
-kbd-1.06.tar.gz contains loadkeys, dumpkeys, showkey,  
-setmetamode, setleds, setfont, showfont, mapscrn,  
-kbd_mode, kbdrate, loadunimap, chvt, resizecons,  
-deallocvt, getkeycodes, setkeycodes.  
-It also contains openvt, formerly called open.  
-  
-  
-There exists a clone of the kbd package, namely console-tools,  
-that contains more or less the same stuff. The latest version,  
-console-tools-.3.3 is roughly up-to-date with kbd-.99.  
-  
-  
-SVGATextMode-1.10 contains SVGATextMode, a program that  
-obsoletes resizecons.  
-  
-  
-util-linux-2.11 contains setterm, kbdrate.  
-  
-  
-sh-utils-1.12 contains stty.  
-  
-  
-See also dynamic-vc-1.2.tar.gz and consd-1.3.tgz for  
-programs that exploit the `Keyboard Signal' key. Very primitive  
-versions are spawn_login or spawn_console found in the kbd package.  
-  
-  
-See  
-font.tgz  
-for a package that handles console fonts.  
-  
-  
-Packages like recode and konwert-1.8 allow one to convert  
-between different character encodings.  
-  
-  
-  
-  
-  
-The X distribution contains xmodmap, xset, kbd_mode.  
-(See also X386keybd(1) for the situation under XFree86 1.3,  
-and Xserver(1) for the XKEYBOARD extension under X11R6.)  
-A handy interface to xmodmap is xkeycaps, see  
-http://www.jwz.org/xkeycaps/.  
-  
-  
-termcap-2..8.tar.gz contains termcap, an old terminal  
-capabilities data base. ncurses-1.9.9e.tar.gz contains the  
-termlib data base which obsoletes termcap. (However,  
-there are still many programs using termcap.)  
-  
-  
-See loadkeys(1), setleds(1) and setmetamode(1) for the codes generated by the  
-various keys and the setting of leds when not under X. Under X, see xmodmap(1)  
-and xset(1).  
-  
-  
-See setfont(8) for loading console fonts. Many people will want to  
-load a font like iso01.f16 because the default font is the  
-hardware font of the video card, and often is a `Code Page 437' font  
-missing accented characters and other Latin-1 symbols.  
-  
-  
-See setterm(1) and kbdrate(8) for properties such as foreground and background  
-colors, screen blanking and character repeat rate when not under X.  
-Under X, see xset(1), also for key click and bell volume.  
-  
-  
-The file /etc/termcap defines the escape sequences  
-used by many programs addressing the console (or any other terminal).  
-See termcap(5).  
-A more modern version is found in /usr/lib/terminfo.  
-See terminfo(5). Terminfo files are compiled  
-by the terminfo compiler /usr/lib/terminfo/tic, see tic(1).  
-Their contents can be examined using the program infocmp,  
-see infocmp(1).  
-  
-  
-The Linux console sequences are documented in console_codes(4).  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!2. Keyboard generalities  
-  
-  
-  
-  
-  
-  
-You press a key, and the keyboard controller sends  
-scancodes  
-to the kernel keyboard driver. Some keyboards can be programmed,  
-but usually the scancodes corresponding to your keys are fixed.  
-The kernel keyboard driver just transmits whatever it receives  
-to the application program when it is in ''scancode mode'',  
-like when X is running. Otherwise, it parses the stream of scancodes  
-into keycodes, corresponding to key press or key release events.  
-(A single key press can generate up to 6 scancodes.)  
-These keycodes are transmitted to the application program when it is  
-in ''keycode mode'' (as used, for example, by showkey  
-and some X servers).  
-Otherwise, these keycodes are looked up in the keymap, and the character  
-or string found there is transmitted to the application, or the action  
-described there is performed.  
-(For example, if one presses and releases the a key, then the keyboard  
-produces scancodes 0x1e and 0x9e, this is converted to keycodes 30 and 158,  
-and then transmitted as 0141, the ASCII or latin-1 code for `a';  
-if one presses and releases Delete, then the keyboard produces scancodes  
-0xe0 0x53 0xe0 0xd3, these are converted to keycodes 111 and 239, and then  
-transmitted as the 4-symbol sequence ESC [[ 3 ~, all assuming  
-a US keyboard and a default keymap. An example of a key combination to which  
-an action is assigned is Ctrl-Alt-Del.)  
-  
-  
-The translation between unusual scancodes and keycodes can be set using the  
-utility setkeycodes - only few people will need it.  
-The translation between keycodes and characters or strings or actions, that is,  
-the keymap, is set using the utilities loadkeys and setmetamode.  
-For details, see getkeycodes(8), setkeycodes(8), dumpkeys(1), loadkeys(1),  
-setmetamode(1). The format of the files output by dumpkeys and read  
-by loadkeys is described in keymaps(5).  
-  
-  
-Where it says `transmitted to the application' in the above description,  
-this really means `transmitted to the terminal driver'. That is, further  
-processing is just like that of text that comes in over a serial line.  
-The details of this processing are set by the program stty.  
-  
-  
-  
-----  
-  
-!!3. Console generalities  
-  
-  
-  
-  
-  
-  
-Conversely, when you output something to the console, it first undergoes  
-the standard tty processing, and then is fed to the console driver.  
-The console driver emulates a VT100, and parses the input in order to  
-recognize VT100 escape sequences (for cursor movement, clear screen, etc.).  
-The characters that are not part of an escape sequence are first converted  
-into Unicode, using one of four mapping tables if the console was not  
-in UTF-8 mode to start with, then looked up in the table describing  
-the correspondence between Unicode values and font positions,  
-and the obtained 8- or 9-bit font indices are then written to video memory,  
-where they cause the display of character shapes found in the video card's  
-character ROM.  
-One can load one's own fonts into character ROM using setfont.  
-The obsolete programs loadunimap and mapscrn can be used  
-to manipulate the Unicode map belonging to the font, or the mapping  
-table of the console. More details will be given below.  
-  
-  
-There are many consoles (called ''Virtual Consoles'' or  
-''Virtual Terminals'', abbreviated VCs or VTs) that share the same  
-screen. You can use them as independent devices, either to run  
-indendent login sessions, or just to send some output to, perhaps  
-from top, or the tail of the system log or so.  
-See below (`Console switching') on how to set them up and  
-switch between them.  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!4. Resetting your terminal  
-  
-  
-  
-  
-  
-  
-  
-  
-There is garbage on the screen, or all your keystrokes are echoed  
-as line drawing characters. What to do?  
-  
-  
-Many programs will redraw the screen when Ctrl-L is typed. This might  
-help when there is some modem noise or broadcast message on your screen.  
-The command clear will clear the screen.  
-  
-  
-The command reset will reset the console driver. This helps when  
-the screen is full of funny graphic characters, and also if it is  
-reduced to the bottom line. If you don't have this command, or if it  
-does something else, make your own by putting the following two lines  
-in an executable file reset in your PATH:  
-  
-  
-#!/bin/sh  
-echo -e \\033c  
-  
-  
-that is, you want to send the two characters ESC c to the console.  
-  
-  
-Why is it that the display sometimes gets confused and gives you  
-a 24-line or 1-line screen, instead of the usual 25 lines?  
-Well, the main culprit is the use of TERM=vt100 (or some other  
-entry with 24 lines) instead of TERM=linux when logged in remotely.  
-If this happens on /dev/tty2 then typing  
-  
-  
-% cat > /dev/tty2  
-^[[c  
-^D  
-  
-  
-on some other VT (where 4 symbols are typed to cat: ESC, c, ENTER,  
-Ctrl-D) and refreshing the screen on /dev/tty2  
-(perhaps using Ctrl-L) will fix things. Of course the permanent fix  
-is to use the right termcap or terminfo entry.  
-A command that only changes the number of lines is  
-  
-  
-% echo -e "\033[[1;25r"  
-  
-  
-  
-  
-Why is it that you sometimes get a lot of line-drawing characters,  
-e.g., after catting a binary to the screen?  
-Well, there are various character set changing escape sequences,  
-and by accident your binary might contain some of these.  
-The ESC c is a general reset, a cure for all, but if you know  
-precisely what went wrong you can repair it without resetting  
-other console attributes. For example, after  
-  
-  
-% cat  
-^N  
-^D  
-  
-  
-your shell prompt will be all line-drawing characters.  
-Now do (typing blindly)  
-  
-  
-% cat  
-^O  
-^D  
-  
-  
-and all is well again. (Three symbols typed to each cat:  
-Ctrl-N (or Ctrl-O), ENTER, Ctrl-D.) To understand what is happening,  
-see `The console character sets' below.  
-  
-  
-If you loaded some strange font, and want to return to the default,  
-  
-  
-% setfont  
-  
-  
-will do (provided you stored the default font in the default place).  
-If this default font does not contain an embedded Unicode map (and  
-gives the wrong symbols for accented characters), then say  
-  
-  
-% loadunimap  
-  
-  
-For example, if I do  
-  
-  
-% loadkeys de-latin1  
-  
-  
-then I have a German keyboard, and the key left of the Enter key  
-gives me a-umlaut. This works, because the a-umlaut occurs  
-on the CP437 code page and the kernel Unicode map is initialized  
-to CP437, and my video card has a CP437 font built-in.  
-If I now load an ISO 8859-1 font with  
-  
-  
-% setfont iso01.f16  
-  
-  
-then everything still works, because setfont invalidates the kernel  
-Unicode map (if there is no Unicode map attached to the font), and without  
-map the kernel goes directly to the font, and that is precisely correct  
-for an ISO 8859-1 system with iso01.f16 font.  
-But going back to the previous font with  
-  
-  
-% setfont  
-  
-  
-gives capital Sigma's instead of a-umlaut - all accented letters  
-are mixed up because also this font has no embedded Unicode map. After  
-  
-  
-% loadunimap  
-  
-  
-which loads the default Unicode map (which is right for the default  
-font) all works correctly again. Usually loadunimap is not  
-invoked directly, but via setfont. Thus, the previous two  
-commands may be replaced by  
-  
-  
-% setfont -u def  
-  
-  
-These days most fonts have embedded Unicode maps (often this is  
-indicated by the extension .psfu), and none of this nonsense  
-is needed anymore.  
-  
-  
-On very old terminals output involving tabs may require a delay,  
-and you have to say  
-  
-  
-% stty tab3  
-  
-  
-(see stty(1)).  
-  
-  
-You can change the video mode using resizecons or  
-SVGATextMode. Or by rebooting and having "vga=ask"  
-in the LILO configuration file.  
-  
-  
-This usually settles the output side.  
-  
-  
-On the input side there are many things that might be wrong. If X or  
-DOOM or some other program using raw mode crashed, your keyboard may  
-still be in raw (or mediumraw) mode, and it is difficult to give commands.  
-(See "How to get out of raw mode" below.)  
-If you loaded a bad keymap, then  
-  
-  
-% loadkeys -d  
-  
-  
-loads the default map again, but it may well be difficult to type `-'!  
-An alternative is  
-  
-  
-% loadkeys defkeymap  
-  
-  
-Sometimes even the letters are garbled. It is useful to know that there  
-are four main types of keyboards: QWERTY, QWERTZ, AZERTY and DVORAK.  
-The first three are named after the first six letter keys, and roughly  
-represent the English, German and French speaking countries.  
-Compared to QWERTY, the QWERTZ map interchanges Y and Z.  
-Compared to QWERTY, the AZERTY map interchanges Q and A, W and Z, and has  
-its M right of the L, at the semicolon position.  
-DVORAK has an entirely different letter ordering.  
-There are two types of Turkish keyboard. The so-called `Q'-keyboard  
-has a QWERTY layout, while the `F'-keyboard has an entirely  
-different layout, let us say fgGIod, where G stands for Gbreve  
-and I for dotlessi.  
-  
-  
-  
-  
-!!4.1 Keyboard hardware reset  
-  
-  
-  
-  
-  
-  
-  
-Things may be wrong on a lower level than Linux knows about.  
-There are at least two distinct lower levels (keyboard and keyboard controller)  
-where one can give the command "keyboard disable" to the keyboard hardware.  
-Keyboards can often be programmed to use one out of three  
-different sets of scancodes.  
-  
-  
-However, I do not know of cases where this turned out to be  
-a problem.  
-  
-  
-Some keyboards have a remapping capability built in.  
-Stormy Henderson (stormy@Ghost.Net) writes:  
-`If it's your keyboard accidently being reprogrammed, you can  
-(on a Gateway !AnyKey keyboard) press control-alt-suspend_macro  
-to reset the keys to normal.'  
-  
-  
-  
-----  
-  
-!!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 all  
-of the programs involved precisely what you want.  
-On the one hand, there is the matter of which keys generate  
-which codes (and how these codes are remapped by e.g. kermit  
-or emacs), and on the other hand the question of what functions  
-are bound to what codes.  
-  
-  
-People often complain `my backspace key does not work', as if this  
-key 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 and  
-all application programs can be configured such that  
-the backspace key indeed does function as a `delete previous character'  
-key.  
-  
-  
-Most Unix programs get their tty input via the kernel tty driver  
-in `cooked' mode, and a simple stty command determines the  
-erase character. However, programs like bash and emacs  
-and X do their own input handling, and have to be convinced  
-one-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 is  
-wrong with your tty settings. If echoprt is set, then erased characters  
-are 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 sane  
-will 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 right  
-getty.  
-  
-  
-Note that many programs (like bash, emacs etc.) have their own  
-keybindings (defined in ~/.inputrc,  
-~/.emacs etc.) and are unaffected by the setting  
-of 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 not  
-have a command `delete current character' either. But for example  
-you 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 keymaps  
-when initialising the X keymap. Although the two systems are not  
-100% compatible, this should mean that in many cases the use of  
-xmodmap has become superfluous.  
-  
-  
-For example, suppose that you would like the Backspace key  
-to send a !BackSpace (Ctrl-H, octal 010) and the grey Delete key  
-a 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 keys  
-when no modifiers are used. (You need to specify a keymaps line  
-to tell which keymaps should be affected if you want to change  
-bindings on more keymaps.)  
-The Linux kernel default lets  
-Ctrl-Backspace generate !BackSpace - this is sometimes useful  
-as emergency escape, when you find you can only generate DELs.  
-  
-  
-The left Alt key is sometimes called the Meta key, and by  
-default 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 command  
-setmetamode. The two choices are: ESC X or X or-ed with 0200.  
-  
-  
-Many distributions have a loadkeys command somewhere in the  
-bootup sequence. For example, one may have the name of the desired  
-keymap in /etc/sysconfig/keyboard and the loadkeys  
-command that loads it in /etc/rc.d/init.d/keytable.  
-Or one may have the actual default keymap in /etc/default.keytab  
-and the loadkeys command that loads it in /etc/rc.d/boot.  
-Etc. Instead of adding a local modification to the default, one can  
-of course change the default by editing the default keymap or changing  
-the name of the keymap to be loaded at boot time. Note that loadkeys  
-itself has default keymap defkeymap.map located somewhere under  
-/usr/lib/kbd or /usr/share/kbd (just like all other  
-keymaps) 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 loading  
-something 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 two  
-global-set-key commands. There are too many places where  
-there are built-in assumptions about Ctrl-H = help and DEL = delete.  
-That doesn't mean that you have to setup keys so that Backspace  
-generates DEL. But if it doesn't then it is easiest to remap  
-them 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 ))  
-(let ((i ))  
-(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-translate  
-and 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 the  
-Backspace 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 than  
-help 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 as  
-xfig, 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 example  
-in .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 (ted@tcg.net) 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 <<-EOF  
-keycode 22 = !BackSpace osfBackSpace  
-keycode 107 = Delete  
-EOF  
-# start your window manager here, for example:  
-#(fvwm) 2>&1 | tee /dev/tty /dev/console  
-stty sane  
-stty erase ^H  
-loadmap <<-EOF  
-keycode 14 = !BackSpace  
-keycode 111 = Delete  
-EOF  
-  
-  
-  
-  
-This will definitely work for a PC 101 or 102 key keyboard  
-with any Linux/XFree86 layout.  
-  
-  
-The important part to making Motif apps like Netscape work properly  
-is 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 one  
-particular 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 contexts  
-is to have the Backspace key generate DEL when on the  
-console (or xterm), and !BackSpace when under X.  
-Maybe that is most convenient - there are too many X utilities  
-that expect !BackSpace, and emacs on the console or xterm  
-expects 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 generates  
-DEL 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, and  
-alternative solutions, see  
-Anne Baretta's page.  
-  
-  
-  
-----  
-  
-!!6. The console character sets  
-  
-  
-  
-  
-  
-  
-  
-The kernel first tries to figure out what symbol is meant by any given  
-user byte, and next where this symbol is located in the current font.  
-  
-  
-The kernel knows about 5 translations of bytes into console-screen symbols.  
-In Unicode (UTF-8) mode, the UTF-8 code is just converted directly into  
-Unicode. The assumption is that almost all symbols one needs are present  
-in Unicode, and for the cases where this does not hold the codes  
-0xf000-0xf1ff are reserved for direct font access.  
-When not in Unicode mode, one of four translation tables is used.  
-The four tables are: a) Latin1 -> Unicode, b) VT100 graphics -> Unicode,  
-c) PC -> Unicode, d) user-defined.  
-  
-  
-There are two character sets, called G0 and G1, and one of them  
-is the current character set. (Initially G0.)  
-Typing Ctrl-N causes G1 to become current, Ctrl-O causes G0 to become current.  
-  
-  
-These variables G0 and G1 point at a translation table, and can be changed  
-by the user. Initially they point at tables a) and b), respectively.  
-The sequences ESC ( B and ESC ( 0 and ESC ( U and ESC ( K cause G0 to point  
-at translation table a), b), c) and d), respectively.  
-The sequences ESC ) B and ESC ) 0 and ESC ) U and ESC ) K cause G1 to point  
-at translation table a), b), c) and d), respectively.  
-  
-  
-The sequence ESC c causes a terminal reset, which is what you want if the  
-screen is all garbled. The oft-advised echo ^V^O will only  
-make G0 current, but there is no guarantee that G0 points at table a).  
-In some distributions there is a program reset(1) that just does  
-echo ^[[c.  
-If your termcap entry for the console is correct (and has an entry  
-:rs=\Ec:), then also setterm -reset will work.  
-  
-  
-The user-defined mapping table can be set using mapscrn(8).  
-The result of the mapping is that if a symbol c is printed, the symbol  
-s = map[[c] is sent to the video memory. The bitmap that corresponds to  
-s is found in the character ROM, and can be changed using setfont(8).  
-  
-  
-  
-----  
-  
-!!7. Console switching  
-  
-  
-  
-  
-  
-  
-By default, console switching is done using Alt-Fn or Ctrl-Alt-Fn.  
-Under X (or recent versions of dosemu), only Ctrl-Alt-Fn works.  
-Many keymaps will allow cyclic walks through all allocated consoles  
-using Alt-!RightArrow and Alt-!LeftArrow.  
-  
-  
-XFree86 1.3 does not know that Alt is down when you switch to the X  
-window. Thus, you cannot switch immediately to some other VT again  
-but have to release Alt first.  
-In the other direction this should work: the kernel always keeps  
-track of the up/down status of all keys. (As far as possible: on some  
-keyboards some keys do not emit a scancode when pressed (e.g.: the PFn  
-keys of a FOCUS 9000) or released (e.g.: the Pause key of many keyboards).)  
-  
-  
-XFree86 1.3 saves the fonts loaded in the character ROMs when started,  
-and restores it on a console switch. Thus, the result of setfont on  
-a VT is wiped out when you go to X and back.  
-Using setfont under X will lead to funny results.  
-  
-  
-One can change VT under program control using the chvt command.  
-  
-  
-  
-  
-!!7.1 Changing the number of Virtual Consoles  
-  
-  
-  
-  
-  
-  
-  
-This question still comes up from time to time, but the answer is:  
-you already have enough of them.  
-Since kernel version 1.1.54, there are between 1 and 63 virtual  
-consoles. A new one is created as soon as it is opened. It is  
-removed by the utility deallocvt (but it can be removed only when  
-no processes are associated to it anymore, and no text on it has been  
-selected by programs like selection or gpm).  
-  
-  
-For older kernels, change the line  
-  
-  
-#define NR_CONSOLES 8  
-  
-  
-in include/linux/tty.h (don't increase this number beyond 63),  
-and recompile the kernel.  
-  
-  
-If they do not exist yet, create the tty devices with MAKEDEV  
-or mknod ttyN c 4 N where N denotes the tty number. For example,  
-  
-  
-for i in 9 10 11 12; do mknod /dev/tty$i c 4 $i; done  
-  
-  
-or, better (since it also takes care of owner and permissions),  
-  
-  
-for i in 9 10 11 12; do /dev/MAKEDEV tty$i; done  
-  
-  
-  
-  
-If you want the new VCs to run getty, add lines in /etc/inittab.  
-(But it is much better to have only two getty's running,  
-and to create more consoles dynamically as the need arises.  
-That way you'll have more memory when you don't use all these consoles,  
-and also more consoles, in case you really need them.  
-Edit /etc/inittab and comment out all getty's except  
-for the first two.)  
-  
-  
-When the consoles are allocated dynamically, it is usually easiest  
-to have only one or two running getty. More are opened by  
-open -l -s bash. Unused consoles (without associated processes)  
-are deallocated using deallocvt (formerly disalloc).  
-But, you say, I am involved in activities when I suddenly need more  
-consoles, and do not have a bash prompt available to give the open  
-command.  
-Fortunately it is possible to create a new console upon a single  
-keystroke, regardless of what is happening at the current console.  
-  
-  
-If you have spawn_login from kbd-1.04.tar.gz and you put  
-  
-  
-loadkeys << EOF  
-alt keycode 103 = Spawn_Console  
-EOF  
-spawn_login &  
-  
-  
-in /etc/rc.local, then typing Alt-!UpArrow will create a fresh VC  
-running login (and switch to it). With spawn_console & instead of  
-spawn_login & you'll have bash running there.  
-See also open-1.4.tgz and dynamic-vc-1.1.tar.gz.  
-  
-  
-What action should be taken upon this Spawn_Console keypress  
-can also be set in /etc/inittab under kbrequest,  
-if you have a recent init. See inittab(5).  
-  
-  
-(This action can be something entirely different - I just called  
-the key Spawn_Console because that is what I used it for.  
-When used for other purposes it is less confusing to use  
-its synonym !KeyboardSignal.  
-For example, some people like to put the lines  
-  
-  
-kb::kbrequest:/sbin/shutdown -h now  
-  
-  
-in /etc/inittab, and  
-  
-  
-control alt keycode 79 = !KeyboardSignal  
-control alt keycode 107 = !KeyboardSignal  
-  
-  
-in their keymap. Now Ctrl-Alt-End will do a system shutdown.)  
-  
-  
-You can only login as "root" on terminals listed in /etc/securetty.  
-There exist programs that read terminal settings from files  
-/etc/ttys and /etc/ttytype. If you have such  
-files, and create additional consoles, then it might be a good idea  
-to also add entries for them in these files.  
-  
-  
-  
-----  
-  
-!!8. Ctrl-Alt-Del and other special key combinations  
-  
-  
-  
-  
-  
-  
-  
-!!8.1 Ctrl-Alt-Del (Boot)  
-  
-  
-  
-  
-  
-  
-  
-If you press Ctrl-Alt-Del (or whatever key was assigned the keysym Boot by  
-loadkeys) then either the machine reboots immediately (without sync), or  
-init is sent a SIGINT. The former behaviour is the default. The default  
-can be changed by root, using the system call reboot(), see ctrlaltdel(8).  
-Some init's change the default. What happens when init gets SIGINT depends  
-on the version of init used - often it will be determined by the pf entry in  
-/etc/inittab (which means that you can run an arbitrary program  
-in this case).  
-In the current kernel Ctrl-!AltGr-Del is no longer by default assigned to Boot.  
-  
-  
-  
-  
-!!8.2 Other combinations  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-Name Default binding  
--------------------------------  
-Show_Memory Shift-Scrollock  
-Show_Registers !AltGr-!ScrollLock  
-Show_State Ctrl-!ScrollLock  
-Console_n Alt-Fn and Ctrl-Alt-Fn (1 <= n <= 12)  
-Console_{n+12} !AltGr-Fn (1 <= n <= 12)  
-Incr_Console Alt-!RightArrow  
-Decr_Console Alt-!LeftArrow  
-Last_Console Alt[[Gr]-!PrintScreen  
-Scroll_Backward Shift-!PageUp  
-Scroll_Forward Shift-!PageDown  
-Caps_On (!CapsLock is a toggle; this key sets)  
-Compose Ctrl-.  
-  
-  
-  
-  
-  
-!!8.3 X Combinations  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-Ctrl-Alt-Fn Switch to VT n  
-Ctrl-Alt-KP+ Next mode  
-Ctrl-Alt-KP- Previous mode  
-Ctrl-Alt-Backspace Kill X  
-  
-On some motherboards, Ctrl-Alt-KP- and Ctrl-Alt-KP+ will be equivalent to  
-pressing the Turbo button. That is, both will produce the scancodes  
-1d 38 4a ca b8 9d and 1d 38 4e ce b8 9d, and both will switch between  
-Turbo (>= 25MHz) and non-Turbo (8 or 12 MHz).  
-(Often these key combinations only function this way when enabled  
-by jumpers on the motherboard.)  
-  
-  
-Perry F Nguyen (pfnguyen@netcom22.netcom.com) writes:  
-AMI BIOS has a feature that locks up the keyboard and flashes the LED's  
-if the Ctrl-Alt-Backspace combination is pressed while a BIOS password  
-is enabled, until the CMOS/BIOS password is typed in.  
-  
-  
-  
-  
-!!8.4 Dosemu Combinations  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-Ctrl-Alt-Fn Switch to VT n (from version .50; earlier Alt-Fn)  
-Ctrl-Alt-!PgDn Kill dosemu (when in RAW keyboard mode)  
-(and many other combinations - see the dosemu documentation)  
-  
-  
-  
-  
-  
-!!8.5 Composing symbols  
-  
-  
-  
-  
-  
-  
-  
-  
-One symbol may be constructed using several keystrokes.  
-  
-  
-*!LeftAlt-press, followed by a decimal number typed on the keypad, followed  
-by !LeftAlt-release, yields the symbol with code given by this number.  
-(In Unicode mode this same mechanism, but then with 4 hexadecimal digits,  
-may be used to define a Unicode symbol.)  
-*  
-  
-*A dead diacritic followed by a symbol, yields that symbol adorned with  
-that diacritic. If the combination is undefined, both keys are taken  
-separately.  
-Which keys are dead diacritics is user-settable; none is by default.  
-Five (since 2..25 six) dead diacritics can be defined (using loadkeys(1)):  
-dead_grave, dead_acute, dead_circumflex, dead_tilde, dead_diaeresis  
-(and dead_cedilla).  
-Precisely what this adorning means is also user-settable:  
-dead-diacritic, symbol is equivalent to Compose + diacritic + symbol.  
-*  
-  
-*Compose followed by two symbols yields a combination symbol. These  
-combinations are user-settable. Today there are 68 combinations  
-defined by default; you can see them by saying "dumpkeys | grep compose".  
-*  
-  
-*Then there are `Sticky' modifier keys (since 1.3.33). For example,  
-one can type Ctrl-C as SControl, C and Ctrl-Alt-!BackSpace as SControl,  
-SAlt, !BackSpace.  
-*  
-  
-  
-  
-Note that there are at least four such composition mechanisms:  
-  
-  
-#The Linux keyboard driver mechanism, used in conjunction with loadkeys.  
-#  
-  
-#The X mechanism - see X386keybd(1), later XFree86kbd(1).  
-Under X11R6: edit /usr/X11R6/lib/X11/locale/iso8859-1/Compose.  
-  
-See also Andrew D. Balsa's comments at  
-http://wauug.erols.com/~balsa/linux/deadkeys/index.html.  
-  
-#  
-  
-#The emacs mechanism obtained by loading "iso-insert.el" or  
-calling `iso-accents-mode'.  
-#  
-  
-#The vim mechanism: insert a composed symbol by pressing Ctrl-K  
-followed by two symbols. A list of the possible combinations is  
-obtained by the command :digraphs.  
-#  
-  
-For X the order of the two symbols is arbitrary: both Compose-,-c and  
-Compose-c-, yield a c-cedilla; for Linux and emacs only the former sequence  
-works by default. For X and vim the list of compose combinations is fixed.  
-Linux and emacs are flexible.  
-The default lists are somewhat similar, but the details are different.  
-  
-  
-  
-  
-!!8.6 The !SysRq key  
-  
-  
-  
-  
-  
-In case your kernel was compiled with CONFIG_MAGIC_SYSRQ enabled  
-(a feature that is present since Linux 2.1.43)  
-there is a single key (defined in <linux/keyboard.h>)  
-to which special system functions are attached, regardless of the  
-current keyboard mode. For the PC architecture this special key is,  
-naturally, the Alt+!SysRq key, and any of the two Alt keys will work.  
-(Note that if CONFIG_MAGIC_SYSRQ was not enabled, the default action  
-of this key is to return to the previous console.)  
-  
-  
-If you press this key, do not release it, and hit another key,  
-a corresponding action is performed. The action is performed whether  
-anybody is logged in or not, is root or not. For the details, see  
-drivers/char/sysrq.c. Since this feature is meant only  
-for kernel hackers, that should suffice. Still, let me add a few  
-remarks.  
-  
-  
-For the key r the keyboard mode is reset to K_XLATE.  
-For the key k a SAK and console reset is done.  
-For the key b the machine is rebooted immediately.  
-(See, not something you want to have enabled on a production machine.)  
-For the key o the power is turned off (when the machine is capable of that).  
-For the key s an emergency sync is scheduled.  
-For the key u an emergency read-only remount is scheduled.  
-For the keys p,t,m various information is shown  
-(namely the same information also shown for RAlt,RCtrl,RShift+!ScrollLock).  
-For the keys e,i,l all processes get a SIG_TERM or SIG_KILL, respectively;  
-for l even the init process is killed.  
-Digits set the log level. Anything else prints a short summary:  
-!SysRq: unRaw saK Boot Off Sync Unmount showPc showTasks showMem  
-loglevel0-8 tErm kIll killalL.  
-  
-  
-Note: These are very dangerous actions! And they do not use your  
-keymap - indeed, are meant for emergency cases where the state  
-of your keymap, or even of the entire kernel, is uncertain.  
-If you use a dvorak keyboard - bad luck! Most other people will  
-be able to survive: the dangerous letters A,M,Q,W,Y,Z that are  
-differently placed on English, French and German keyboards, are  
-not used for actions. (But if your finger slips and you hit L  
-instead of K - bye bye to your system.)  
-  
-  
-In Linux 2.3.13 the possibility to enable/disable !SysRq was added.  
-  
-  
-echo 0 > /proc/sys/kernel/sysrq  
-  
-  
-will disable it (if the kernel was compiled with CONFIG_MAGIC_SYSRQ).  
-  
-  
-  
-  
-!!8.7 Problems  
-  
-  
-  
-A good keyboard accurately reports multiple key presses.  
-Especially for people using a keyboard as Braille input device,  
-where they have to be able to press up to six keys simultaneously,  
-this is important. Many modern keyboards fail here due to sloppy  
-design and testing - they misreport or fail in other ways when  
-four or more keys are pressed simultaneously, sometimes already  
-when two non-modifier keys are pressed simultaneously.  
-This affects Linux users a bit: the !SysRq key is not a modifier key,  
-and people report problems using Alt-!SysRq-''X'' for various  
-letters or digits ''X''.  
-  
-  
-Long ago a similar problem (`ghosting') was caused by the design  
-of the scan matrix: when three keys were pressed a fourth was  
-also seen. That problem was solved by the use of diodes.  
-Today it is the interface logic that is deficient.  
-  
-  
-  
-----  
-  
-!!9. How to get out of raw mode  
-  
-  
-  
-  
-  
-  
-If some program using K_RAW keyboard mode exits without restoring the keyboard  
-mode to K_XLATE, then it is difficult to do anything - not even Ctrl-Alt-Del  
-works. However, it is sometimes possible to avoid hitting the reset button.  
-(And desirable as well: your users may get angry if you kill their Hack game  
-by rebooting; you might also damage your file system.)  
-Easy solutions involve logging in from another terminal or another machine  
-and doing kbd_mode -a.  
-The procedure below assumes that no X is running, that the display is in  
-text mode, and that you are at your bash prompt, that you are using a US  
-keyboard layout, and that your interrupt character is Ctrl-C.  
-  
-  
-Step 1. Start X.  
-As follows: press 2 (and don't release), press F12 (and don't release)  
-and immediately afterwards press = . This starts X.  
-(Explanation: if a key press produces keycode K, then the key release  
-produces keycode K+128. Probably your shell does not like these high  
-characters, so we avoid generating them by not releasing any key.  
-However, we have to be quick, otherwise key repeat starts. The digit 2  
-produces a Ctrl-C that discards previous junk, the F12 produces an X  
-and the = a Return.)  
-Probably your screen will be grey now, since no .xinitrc was specified.  
-However, Ctrl-Alt-Fn will work and you can go to another VT.  
-(Ctrl-Alt-Backspace also works, but that exits X, and gets you back into  
-the previous state, which is not what you want.)  
-  
-  
-Step 2. Setup to change the keyboard mode.  
-(For example, by sleep 5; kbd_mode -a.)  
-  
-  
-Step 3. Leave X again.  
-Alt-Fx (often Alt-F7) brings you back to X, and then Ctrl-Alt-Backspace  
-exits X. Within 5 seconds your keyboard will be usable again.  
-  
-  
-If you want to prepare for the occasion, then make  
-\215A\301 (3 symbols) an alias for kbd_mode -a.  
-Now just hitting = F7 = (3 symbols) will return you to sanity.  
-  
-  
-  
-----  
-  
-!!10. The keyboard LEDs  
-  
-  
-  
-  
-  
-  
-  
-1. There are per-tty keyboard flags:  
-each VC has its own !NumLock, !CapsLock, !ScrollLock.  
-By default these keyboard flags are shown in the LEDs.  
-The usual way to change them is by pressing the corresponding key.  
-(Side remark: pressing the !NumLock key when in application key mode  
-will not change the !NumLock status, but produce an escape sequence.  
-If you want the !NumLock key to always change the Numlock status,  
-bind it to Bare_Num_Lock.)  
-  
-  
-2. Next, there are per-tty default keyboard flags,  
-to initialize the keyboard flags when a reset occurs.  
-Thus if you want !NumLock on all the time, that is possible.  
-The usual way to change them is by `setleds -D ...'.  
-  
-  
-3. There is the possibility that the leds do not reflect  
-the keyboard flags, but something else.  
-  
-  
-3A. This something else can be three bits somewhere in the kernel -  
-which can be used if you want to monitor some hardware or software  
-status bit(s). If you want this, edit the kernel source to call  
-register_leds() somewhere.  
-  
-  
-3B. This something else can also be whatever some user program wants  
-to show in the LEDs. Thus, people who like such things can make  
-nice patterns of lights. If you want this, use the KDSETLED ioctl.  
-  
-  
-This latter use is not per-tty, but the choice between former  
-and latter use is per-tty.  
-  
-  
-Summarizing: Each tty has a flag kbd->ledmode.  
-If this has the value LED_SHOW_FLAGS then the keyboard flags  
-(!NumLock etc.) of that tty are shown.  
-If this has the value LED_SHOW_MEM then three selected memory  
-addresses are shown.  
-If this has the value LED_SHOW_IOCTL then the leds show whatever  
-value was last assigned to them using the KDSETLED ioctl.  
-  
-  
-One may add that X uses ioctl's to set the LEDs, but fails  
-to reset its VT when it exits, so after using X there may  
-be one VT that is not in the default LED_SHOW_FLAGS state.  
-This can be fixed by doing `setleds -L' on that VT.  
-See setleds(1).  
-  
-  
-  
-----  
-  
-!!11. The TERM variable  
-  
-  
-  
-  
-  
-  
-  
-Many programs use the TERM variable and the database  
-/etc/termcap or /usr/lib/terminfo/* to decide  
-which strings to send for clear screen, move cursor, etc.,  
-and sometimes also to decide which string is sent  
-by the users backspace key, function keys etc.  
-This value is first set by the kernel (for the console).  
-Usually, this variable is re-set by getty, using /etc/ttytype or  
-the argument specified in /etc/inittab.  
-Sometimes, it is also set in /etc/profile.  
-  
-  
-Older systems use TERM=console or TERM=con80x25. Newer systems (with  
-ncurses 1.8.6) use the more specific TERM=linux or TERM=linux-80x25.  
-However, old versions of setterm test for TERM=con* and hence fail  
-to work with TERM=linux.  
-  
-  
-Since kernel version 1.3.2, the kernel default for the console is  
-TERM=linux.  
-  
-  
-If you have a termcap without entry for linux, add the word linux  
-to the entry for the console:  
-  
-  
-console|con80x25|linux:\  
-  
-  
-and make /usr/lib/terminfo/l/linux a copy of or symbolic link to  
-/usr/lib/terminfo/c/console.  
-  
-  
-  
-  
-!!11.1 Terminfo  
-  
-  
-  
-  
-  
-  
-  
-The terminfo entry for the linux console from ncurses 1.8.6 misses the  
-entry kich1=\E[[2~, needed by some programs.  
-Edit the file and tic it.  
-  
-  
-  
-----  
-  
-!!12. How to make other programs work with non-ASCII chars  
-  
-  
-  
-  
-  
-  
-In the bad old days this used to be quite a hassle. Every separate  
-program had to be convinced individually to leave your bits alone.  
-Not that all is easy now, but recently a lot of gnu utilities have  
-learned to react to LC_CTYPE=iso_8859_1 or LC_CTYPE=iso-8859-1.  
-Try this first, and if it doesn't help look at the hints below.  
-Note that in recent versions of libc the routine setlocale() only  
-works if you have installed the locale files (e.g. in  
-/usr/lib/locale).  
-  
-  
-First of all, the 8-th bit should survive the kernel input processing,  
-so make sure to have stty cs8 -istrip -parenb set.  
-  
-  
-A. For emacs the details strongly depend on the version.  
-The information below is for version 19.34. Put lines  
-  
-  
-(set-input-mode nil nil 1)  
-(standard-display-european t)  
-(require 'iso-syntax)  
-  
-  
-into your $HOME/.emacs.  
-The first line (to be precise: the final 1)  
-tells emacs not to discard the 8-th bit from input characters.  
-The second line tells emacs not to display non-ASCII characters  
-as octal escapes.  
-The third line specifies the syntactic properties  
-and case conversion table for the Latin-1 character set  
-These last two lines are superfluous if you have something like  
-LC_CTYPE=ISO-8859-1 in your environment.  
-(The variable may also be LC_ALL or even LANG.  
-The value may be anything with a substring `88591' or `8859-1'  
-or `8859_1'.)  
-  
-  
-This is a good start.  
-On a terminal that cannot display non-ASCII ISO 8859-1 symbols,  
-the command  
-  
-  
-(load-library "iso-ascii")  
-  
-  
-will cause accented characters to be displayed comme {,c}a.  
-If your keymap does not make it easy to produce non-ASCII characters,  
-then  
-  
-  
-(load-library "iso-transl")  
-  
-  
-will make the 2-character sequence Ctrl-X 8 a compose character,  
-so that the 4-character sequence Ctrl-X 8 , c produces c-cedilla.  
-Very inconvenient.  
-  
-  
-The command  
-  
-  
-(iso-accents-mode)  
-  
-  
-will toggle ISO-8859-1 accent mode, in which the six  
-characters ', `, ", ^, ~, / are dead keys  
-modifying the following symbol.  
-Special combinations: ~c gives a c with cedilla,  
-~d gives an Icelandic eth, ~t gives an Icelandic thorn,  
-"s gives German sharp s, /a gives a with ring,  
-/e gives an a-e ligature, ~< and ~> give guillemots,  
-~! gives an inverted exclamation mark,  
-~? gives an inverted question mark, and '' gives an acute accent.  
-This is the default mapping of accents.  
-The variable iso-languages is a list of pairs (language name,  
-accent mapping), and a non-default mapping can be selected using  
-  
-  
-(iso-accents-customize LANGUAGE)  
-  
-  
-Here LANGUAGE can be one of "portuguese", "irish",  
-"french", "latin-2", "latin-1".  
-  
-  
-Since the Linux default compose character is Ctrl-.  
-it might be convenient to use that everywhere. Try  
-  
-  
-(load-library "iso-insert.el")  
-(define-key global-map [[?\C-.] 8859-1-map)  
-  
-  
-The latter line will not work under xterm, if you use emacs -nw,  
-but in that case you can put  
-  
-  
-XTerm*VT100.Translations: #override\n\  
-Ctrl <!KeyPress> . : string("\0308")  
-  
-  
-in your .Xresources.)  
-  
-  
-B. For less, put LESSCHARSET=latin1 in the environment.  
-This is also what you need if you see \255 or <AD>  
-in man output: some versions of less will render the soft hyphen  
-(octal 0255, hex 0xAD) this way when not given permission to output Latin-1.  
-  
-  
-C. For ls, give the option -N. (Probably you want to make an alias.)  
-  
-  
-D. For bash (version 1.13.*), put  
-  
-  
-set meta-flag on  
-set convert-meta off  
-set output-meta on  
-  
-  
-into your $HOME/.inputrc.  
-  
-  
-E. For tcsh, use  
-  
-  
-setenv LANG US_en  
-setenv LC_CTYPE iso_8859_1  
-  
-  
-If you have nls on your system, then the corresponding routines are used.  
-Otherwise tcsh will assume iso_8859_1, regardless of the values given to  
-LANG and LC_CTYPE. See the section NATIVE LANGUAGE SYSTEM in tcsh(1).  
-(The Danish HOWTO says: setenv LC_CTYPE ISO-8859-1; stty pass8)  
-  
-  
-F. For flex, give the option -8 if the parser it generates must be  
-able to handle 8-bit input. (Of course it must.)  
-  
-  
-G. For elm, set displaycharset to ISO-8859-1.  
-(Danish HOWTO: LANG=C and LC_CTYPE=ISO-8859-1)  
-  
-  
-H. For programs using curses (such as lynx) David Sibley reports:  
-The regular curses package uses the high-order bit for reverse video mode  
-(see flag _STANDOUT defined in /usr/include/curses.h). However,  
-ncurses seems to be 8-bit clean and does display iso-latin-8859-1  
-correctly.  
-  
-  
-I. For programs using groff (such as man), make sure to use  
--Tlatin1 instead of -Tascii. Old versions of the program man  
-also use col, and the next point also applies.  
-  
-  
-J. For col, make sure 1) that it is fixed so as to do  
-setlocale(LC_CTYPE,""); and 2) put  
-LC_CTYPE=ISO-8859-1 in the environment.  
-  
-  
-K. For rlogin, use option -8.  
-  
-  
-L. For joe,  
-metalab.unc.edu:/pub/Linux/apps/editors/joe-1..8-linux.tar.gz  
-is said to work after editing the configuration file. Someone else said:  
-joe: Put the -asis option in /isr/lib/joerc in the  
-first column.  
-  
-  
-M. For LaTeX: \documentstyle[[isolatin]{article}.  
-For LaTeX2e: \documentclass{article}\usepackage{isolatin}  
-where isolatin.sty is available from  
-ftp.vlsivie.tuwien.ac.at/pub/8bit.  
-  
-  
-A nice discussion on the topic of ISO-8859-1 and how to manage 8-bit  
-characters is contained in the file grasp.insa-lyon.fr:/pub/faq/fr/accents  
-(in French). Another fine discussion (in English) can be found in  
-rtfm.mit.edu:pub/usenet-by-group/comp.answers/internationalization/iso-8859-1-charset.  
-  
-  
-If you need to fix a program that behaves badly with 8-bit characters,  
-one thing to keep in mind is that if you have a signed char type then  
-characters may be negative, and using them as an array index will fail.  
-Several programs can be fixed by judiciously adding (unsigned char) casts.  
-  
-  
-  
-----  
-  
-!!13. X  
-  
-  
-  
-  
-  
-This FAQ/HOWTO is about the Linux keyboard and console, not about X,  
-which substitutes its own handling. However, it seems useful to  
-document some of the Linux keyboard and console related properties  
-of X.  
-  
-  
-First of all, when X is started (say using startx or xinit)  
-it opens the first unused console, unless the desired console has been  
-indicated explicitly, as in xinit -- vt12.  
-Note that this will fail when there is no device file /dev/tty12,  
-but that it will not fail when the indicated console was in use already.  
-When X finishes, it will return to the original console.  
-While it is running one can use Ctrl-Alt-Fn to switch to VTn.  
-  
-  
-The XFree86 keymap mechanism is much poorer than the Linux mechanism.  
-For each keycode there are at most 4 symbols defined, namely for the  
-4 keymaps plain, shift, mod, mod+shift. What is the modifier mod?  
-It is the one designated by the symbol Mode_switch.  
-For example, the command xmodmap keys.dk, where the file  
-keys.dk contains  
-  
-  
-keycode 64 = Mode_switch  
-keycode 113 = Mode_switch  
-keycode 38 = a A aring Aring  
-keycode 26 = e E ae AE  
-keycode 32 = o O oslash Ooblique  
-  
-  
-will make both Alt keys into mod keys, so that Alt+a gives aring (a-ring), etc.  
-(Note the illogical naming of oslash and Ooblique.)  
-Such an xmodmap command can be placed in the .xinitrc  
-shell script that is executed by default when X is started.  
-  
-  
-  
-  
-!!13.1 What precisely does XFree86-2.1 do when it initializes its keymap?  
-  
-  
-  
-  
-  
-  
-  
-  
-Since version 2.1, XFree86 will initialize its keymap from the Linux keymap,  
-as far as possible. However, Linux had 16 entries per key (one for each  
-combination of the Shift, !AltGr, Ctrl, Alt modifiers) and presently has  
-256 entries per key, while X has 4 entries per key (one for each combination  
-of Shift, Mod), so some information is necessarily lost.  
-  
-  
-First X reads the Xconfig file, where definitions of the !LeftAlt, !RightAlt,  
-!RightCtl, !ScrollLock keys as Meta, !ModeShift, Compose, !ModeLock or !ScrollLock  
-might be found - see X386keybd(1), later XFree86kbd(1).  
-  
-  
-For Mod the !LeftAlt key is taken, unless !RightCtl was defined as !ModeShift or  
-!ModeLock, in which case !RightCtl is taken, or !RightAlt was so defined, in which  
-case !RightAlt is taken.  
-This determines how the 4 XFree86 meanings of a key are selected from the 16  
-Linux meanings.  
-Note that Linux today does not distinguish by default between the two Ctrl keys  
-or between the two Shift keys. X does distinguish.  
-  
-  
-Now the kernel keymap is read and the usually obvious corresponding X  
-bindings are made. The bindings for the "action keys" Show_Memory, Show_State,  
-Show_Registers, Last_Console, Console_n, Scroll_Backward, Scroll_Forward,  
-Caps_On and Boot are ignored, as are the dead diacriticals, and the locks  
-(except for !ShiftLock), and the "ASCII-x" keys.  
-  
-  
-Next, the definitions in the Xconfig file are used. (Thus, a definition  
-of Compose in Xconfig will override its value as found in the Linux  
-keymap.)  
-  
-  
-What happens to the strings associated with the function keys? Nothing,  
-X does not have such a concept. (But it is possible to define strings  
-for function keys in xterm - note however that the window manager gets the  
-keys first.)  
-  
-  
-I don't know how to convince xterm that it should use the X keymap  
-when Alt is pressed; it seems just to look at its resource eightBitInput,  
-and depending on whether that is true or false either set the high order bit  
-of the character, or generate an additional Escape character  
-(just like setmetamode(1) does for the console).  
-  
-  
-  
-----  
-  
-!!14. Unusual keys and keyboards  
-  
-  
-  
-  
-  
-  
-  
-The two keys !PrintScrn/!SysRq and Pause/Break are special in that they  
-have two keycodes: the former has keycode 84 when Alt is pressed  
-simultaneously, and keycode 99 otherwise; the latter has keycode  
-101 when Ctrl is pressed simultaneously, and keycode 119 otherwise.  
-(Thus, it makes no sense to bind functions to Alt keycode 99 or  
-Ctrl keycode 119.) The Pause/Break key is also special in another way:  
-it does not generate key-up scancodes, but generates the entire  
-6-scancode sequence on key-down.  
-  
-  
-If you have strange keys, that do not generate any code under Linux  
-(or generate messages like "unrecognized scancode"), and your kernel  
-is 1.1.63 or later, then you can use setkeycodes(1) to tell the kernel  
-about them. Once they have gotten a keycode from setkeycodes,  
-they can be assigned a function by loadkeys.  
-  
-  
-For example, using showkey -s one sees that Microsoft keyboards  
-use the scancode sequences (in hexadecimal) e0 5b (left Windows key),  
-e0 5c (right Windows key), e0 5d (Menu key).  
-Microsoft Internet keyboard also uses e0 6a (Back), e0 69 (Forward),  
-e0 68 (Stop), e0 6c (Mail), e0 65 (Search), e0 66 (Favorites),  
-e0 32 (Web/Home), e0 6b (My Computer), e0 21 (Calculator), e0 5f (Sleep).  
-Use dumpkeys to see what keycodes are still unused.  
-Typically values like 89-95 and 112-118 and 120-127 are free.  
-Now  
-  
-  
-% setkeycodes e05b 125  
-% setkeycodes e05c 126  
-% setkeycodes e05d 127  
-  
-  
-assigns keycodes to these scancode sequences, and  
-  
-  
-% loadkeys  
-keycode 125 = Decr_Console  
-keycode 126 = Incr_Console  
-keycode 127 = !KeyboardSignal  
-%  
-  
-  
-would make these Windows keys go to the previous or next virtual console,  
-and let the Menu key create a fresh virtual console (in case you have  
-something like spawn_console running).  
-  
-  
-  
-----  
-  
-!!15. Examples of use of loadkeys and xmodmap  
-  
-  
-  
-  
-  
-  
-  
-Switching Caps Lock and Control on the keyboard (assuming you use  
-keymaps -15; check with dumpkeys | head -1)  
-  
-  
-% loadkeys  
-keymaps -15  
-keycode 58 = Control  
-keycode 29 = Caps_Lock  
-%  
-  
-  
-Switching them under X only:  
-  
-  
-% xmodmap .xmodmaprc  
-  
-  
-where .xmodmaprc contains lines  
-  
-  
-remove Lock = Caps_Lock  
-remove Control = Control_L  
-keysym Control_L = Caps_Lock  
-keysym Caps_Lock = Control_L  
-add Lock = Caps_Lock  
-add Control = Control_L  
-  
-  
-What is this about the key numbering? Backspace is 14 under Linux,  
-22 under X? Well, the numbering can best be regarded as arbitrary;  
-the Linux number of a key can be found using showkey(1), and the  
-X number using xev(1). Often the X number will be 8 more than the  
-Linux number.  
-  
-  
-Something else people like to change are the bindings of the function keys.  
-Suppose that you want to make F12 produce the string "emacs ".  
-Then  
-  
-  
-% loadkeys  
-keycode 88 = F12  
-string F12 = "emacs "  
-%  
-  
-  
-will do this. More explicitly, the procedure is like this:  
-(i) find the keycodes of the keys to be remapped, using showkey(1).  
-(ii) save the current keymap, make a copy and edit that:  
-  
-  
-% dumpkeys > my_keymap  
-% cp my_keymap trial_keymap  
-% emacs trial_keymap  
-% loadkeys trial_keymap  
-%  
-  
-  
-The format of the table can be guessed by looking at the output  
-of dumpkeys, and is documented in keymaps(5).  
-When the new keymap functions as desired, you can put an invocation  
-  
-  
-loadkeys my_new_keymap  
-  
-  
-in /etc/rc.local or so, to execute it automatically at boot-up.  
-Note that changing modifier keys is tricky, and a newbie can easily  
-get into a situation only an expert can get out of.  
-  
-  
-The default directory for keymaps is /usr/lib/kbd/keymaps.  
-The default extension for keymaps is .map.  
-For example, loadkeys uk would probably load  
-/usr/lib/kbd/keymaps/i386/qwerty/uk.map.  
-(With kbd-.95 and older this would be /usr/lib/kbd/keytables  
-and /usr/lib/kbd/keytables/uk.map.)  
-  
-  
-  
-  
-  
-(On my machine) /dev/console is a symbolic link to /dev/tty0,  
-and the kernel regards /dev/tty0 as a synonym for the current VT.  
-XFree86 1.3 changes the owner of /dev/tty0, but does not reset this  
-after finishing. Thus, loadkeys or dumpkeys might fail because  
-someone else owns /dev/tty0;  
-in such a case you might run X first.  
-Note that you cannot change keyboard mappings when not at the console  
-(and not superuser).  
-  
-  
-  
-  
-!!15.1 `I can use only one finger to type with'  
-  
-  
-  
-  
-  
-  
-  
-"Can the Shift, Ctrl and Alt keys be made to behave as toggles?"  
-  
-  
-Yes, after saying  
-  
-  
-% loadkeys  
-keymaps -15  
-keycode 29 = Control_Lock  
-keycode 42 = Shift_Lock  
-keycode 56 = Alt_Lock  
-%  
-  
-  
-the left Control, Shift and Alt keys will act as toggles.  
-The numbers involved are revealed by showkey  
-(and usually are 29, 97, 42, 54, 56, 100 for left and right control,  
-shift and alt, respectively), and the functions are  
-Control_Lock, Shift_Lock, Alt_Lock, ALtGr_Lock.  
-  
-  
-"What about `sticky' modifier keys?"  
-  
-  
-Since version 1.3.33, the kernel knows about `sticky' modifier keys.  
-These act on the next key pressed. So, where one earlier needed  
-the 3-symbol sequence Shift_Lock a Shift_Lock to type `A', one  
-can now use the 2-symbol sequence SShift_Lock a.  
-You can say  
-  
-  
-% loadkeys  
-keymaps -15  
-keycode 54 = SShift  
-keycode 97 = SCtrl  
-keycode 100 = SAlt  
-%  
-  
-  
-to make the right Shift, Ctrl, Alt sticky versions of the left ones.  
-This will allow you to type Ctrl-Alt-Del in three keystrokes with one hand.  
-  
-  
-The keymaps line in these examples should cover all keymaps you have in use.  
-You find what keymaps you have in use by  
-  
-  
-% dumpkeys | head -1  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-!!15.2 Sticky keys under X  
-  
-  
-  
-The following text was contributed by Piotr Mitros.  
-  
-  
-XFree86 supports an accessibility option which allows disabled users  
-to type single-handed. With sticky keys enabled, the user can hit a  
-modifier key (ctrl, alt, shift) followed by another key, rather than  
-having to hold the modifier key while hitting the letter.  
-  
-  
-To enable sticky keys, first make sure the xkb extension is enabled  
-(this is done during initial X server configuration and is usually  
-enabled by default). Next, run the X server with the +accessx  
-option. If you use startx, either run startx -- +accessx or  
-add +accessx to the serverargs line in the startx script.  
-If you use xdm, add +accessx to the appropriate server line  
-in /etc/X11/xdm/Xservers.  
-  
-  
-It is also possible to enable X accessibility with some end-user  
-utilities with a running X server.  
-  
-  
-Once X accessibility is enabled, press the shift key five times in a  
-row to enable sticky keys. To disable sticky keys, either press the  
-shift key five times again, or press a key while holding a modifier  
-key.  
-  
-  
-XFree86 also supports Slow Keys, Repeat Keys, Bounce Keys and an  
-audible bell. xkbcomp can be used to generate a .xkm file  
-to enable these. The appropriate xkbcomp commands are listed in  
-/usr/X11R6/lib/X11/xkb/compat/accessx.  
-Unfortunately, the exact process is still undocumented.  
-  
-  
-  
-----  
-  
-!!16. Changing the video mode  
-  
-  
-  
-  
-  
-  
-  
-  
-As far as I know there are 6 ways to change resolution:  
-  
-  
-1. At compile time: change the line  
-  
-  
-SVGA_MODE= -DSVGA_MODE=NORMAL_VGA  
-  
-  
-in /usr/src/linux/Makefile.  
-  
-  
-1A. After compilation: use rdev -v - a terrible hack, but it exists.  
-  
-  
-2. At boot time: put vga=ask in the lilo config file, and lilo will  
-ask you what video mode you want. Once you know, put vga=mypreference.  
-  
-  
-3. At run time:  
-A. Use the resizecons command. (This is a very primitive wrapper around  
-the VT_RESIZE ioctl.)  
-B. Use the SVGATextMode command. (This is a less primitive wrapper around  
-the VT_RESIZE ioctl.)  
-  
-  
-4. Not "on the console":  
-Under dosemu, or with svgalib etc. you can change the hardware video mode  
-without the console driver being aware of it. Sometimes this is useful in  
-getting resizecons or SVGATextMode set up: use dosemu and some  
-DOS program to get into the desired videomode, dump (say from another VT) the  
-contents of all video hardware registers, and use that in the initialization  
-that resizecons and SVGATextMode require.  
-In some cases where the video mode has gotten into some unusable state,  
-starting dosemu, relying on the BIOS to set up the video mode, and then  
-killing dosemu (with kill -9), is the easiest way to get into shape  
-again.  
-  
-  
-  
-  
-!!16.1 Instructions for the use of resizecons  
-  
-  
-  
-  
-  
-  
-  
-Get svgalib and compile the program restoretextmode.  
-Boot up your machine in all possible video modes  
-(using vga=ask in the lilo config file), and write  
-the video hardware register contents to files CxR  
-(C=cols, R=rows), e.g., 80x25, 132x44, etc.  
-Put these files in /usr/lib/kbd/videomodes.  
-Now resizecons 132x44 will change videomode for you  
-(and send SIGWINCH to all processes that need to know  
-about this, and load another font if necessary).  
-  
-  
-At present, resizecons only succeeds when there is memory enough  
-for both the old and the new consoles at the same time.  
-  
-  
-  
-----  
-  
-!!17. Changing the keyboard repeat rate  
-  
-  
-  
-  
-  
-  
-At startup, the Linux kernel sets the repeat rate to its maximal value.  
-For most keyboards this is reasonable, but for some it means that you  
-can hardly touch a key without getting three copies of the corresponding  
-symbol. Use the program kbdrate(8) to change the repeat rate, or, if  
-that doesn't help, edit or remove the section  
-----  
-  
-! set the keyboard repeat rate to the max  
-mov ax,#0x0305  
-xor bx,bx ! clear bx  
-int 0x16  
-  
-----  
-of /usr/src/linux/[[arch/i386/]boot/setup.S.  
-  
-  
-Scott Johnston (sj@zule.com) reports: `To program the  
-repeat rate of a Gateway !AnyKey keyboard all one has to do  
-is press the "Repeat Rate" key, then a function key  
-F1-F8, then "Repeat Rate" again. F1 is the slowest possible repeat rate,  
-and F8 is really fast. If you somehow manage to mess up your !AnyKey  
-keyboard doing this, simply press Ctrl-Alt-!SuspndMacro to reset  
-your keyboard to factory default settings.'  
-  
-  
-  
-----  
-  
-!!18. Scrolling  
-  
-  
-  
-  
-  
-  
-  
-There are two ways to get a screen to scroll.  
-The first, called `hard scrolling', is to leave the text in  
-video memory as it is, but change the viewing origin. This is  
-very fast.  
-The second, called `soft scrolling', involves moving all screen text  
-up or down. This is much slower.  
-The kernel console driver will write text starting at the top of  
-the video memory, continuing to the bottom, then copy the bottom  
-part to the top again, and continue, all the time using hard scrolling  
-to show the right part on the screen.  
-You can scroll back until the top op the video memory by using  
-Shift-!PageUp (the grey !PageUp) and scroll down again using  
-Shift-!PageDown (the grey !PageDown), assuming a default keymap.  
-The amount of scrollback is thus limited to the amount of video memory  
-you happen to have and you cannot increase this amount.  
-If you need more scrollback, use some program that  
-buffers the text, like less or screen - by using  
-a buffer on disk you can go back to what you did last week.  
-(One can set the amount of scrollback for xterm by  
-adding a line like XTerm*saveLines: 2500 in .Xresources.)  
-  
-  
-Upon changing virtual consoles, the screen content of the old VT  
-is copied to kernel memory, and the screen content of the new VT  
-is copied from kernel memory to video memory. Only the visible screen  
-is copied, not all of video memory, so switching consoles means  
-losing the scrollback information.  
-  
-  
-Sometimes, hard scrolling is undesirable, for example when the hardware  
-does not have the possibility to change viewing origin. The first  
-example was a Braille machine that would render the top of video  
-memory in Braille. There is a kernel boot-time option no-scroll  
-to tell the console driver not to use hard scrolling.  
-See bootparam(7).  
-  
-  
-  
-----  
-  
-!!19. Screensaving  
-  
-  
-  
-  
-  
-  
-  
-setterm -blank ''nn'' will tell the console driver to blank the  
-screen after ''nn'' minutes of inactivity. (With ''nn'' = , screensaving  
-is turned off. In some old kernels this first took effect after the next  
-keyboard interrupt.)  
-  
-  
-The s option of xset(1) will set the X screensaving parameters:  
-xset s off turns off the screensaver,  
-xset s 10 blanks the screen after 10 minutes.  
-  
-  
-The video hardware powersaving modes can be enabled/disabled  
-using the setvesablank program given in the starting comment of  
-/usr/src/linux/drivers/char/vesa_blank.c.  
-  
-  
-  
-----  
-  
-!!20. Screen dumps  
-  
-  
-  
-  
-  
-  
-  
-setterm -dump ''N'' will dump the contents of the  
-screen of /dev/tty''N'' to a file screen.dump  
-in the current directory. See setterm(1).  
-  
-  
-The current contents of the screen of /dev/tty''N''  
-can be accessed using the device /dev/vcs''N''  
-(where `vcs' stands for `virtual console screen').  
-For example, you could have a clock program that displays the  
-current time in the upper right hand corner of the console screen  
-(see the program vcstime in kbd-1.04.tar.gz).  
-Just dumping the contents goes with cat /dev/vcs''N''.  
-These device files /dev/vcs''N'' do not contain  
-newlines, and do not contain attributes, like colors. From a program  
-it is usually better to use /dev/vcsa''N''  
-(`virtual console screen with attributes') instead - it starts with  
-a header giving the number of rows and columns and the location  
-of the cursor.  
-See vcs(4).  
-  
-  
-  
-----  
-  
-!!21. Some properties of the VT100 - application key mode  
-  
-  
-  
-  
-  
-  
-  
-: Sometimes my cursor keys or keypad keys produce strange codes?  
-  
-  
-When the terminal is in application cursor key mode the cursor keys  
-produce Esc O x and otherwise Esc [[ x where x is one of A,B,C,D.  
-Certain programs put the terminal in application cursor key mode;  
-if you kill them with kill -9, or if they crash, then the mode will  
-not be reset.  
-  
-% echo -e '\033c'  
-  
-resets all properties of the current VC. Just changing the cursor  
-application key mode is done by  
-  
-% echo -e '\033[[?1h'  
-  
-(set) and  
-  
-% echo -e '\033[[?1l'  
-  
-(clear).  
-  
-  
-When the terminal is in application keypad key mode the keypad keys  
-produce Esc O y and otherwise Esc [[ z ~ for  
-certain y and z. Setting application keypad key mode is done by  
-  
-% echo -e '\033='  
-  
-and  
-  
-% echo -e '\033>'  
-  
-clears it again.  
-  
-  
-  
-----  
-  
-!!22. Hardware incompatibility  
-  
-  
-  
-  
-  
-  
-  
-Several people have noticed that they lose typed characters when  
-a floppy disk is active. It seems that this might be a problem with  
-Uni-486WB motherboards.  
-  
-  
-Tjalling Tjalkens (tjalling@ei.ele.tue.nl) reports very similar problems  
-with "a no-brand GMB-486 UNP Vesa motherboard with AMD 486DX2-66 CPU" -  
-during floppy activity some keystrokes are lost, during floppy tape streamer  
-(Conner C 250 MQ) activity many keystrokes are lost.  
-  
-  
-Some people experience sporadic lockups - sometimes associated to  
-hard disk activity or other I/O.  
-  
-  
-Ulf Tietz (ulf@rio70.bln.sni.de) wrote:  
-`I have had the same problems, when I had my motherboard tuned too fast.  
-So I reset all the timings ( CLK, wait statements etc ) to more  
-conventional values, and the problems are gone.'  
-  
-  
-Bill Hogan (bhogan@crl.com) wrote:  
-`If you have an AMI BIOS, you might try setting the Gate A20 emulation  
-parameter to "chipset" (if you have that option). Whenever I have had  
-that parameter set to any of the other options on my machine  
-("fast", "both", "disabled") I have had frequent keyboard lockups.'  
-  
-  
-There may be a relation between keyboard problems and the video card in use.  
-  
-  
-Shawn K. Quinn (skquinn@wt.net) wrote:  
-`I have a Zeos Pantera Pentium-90 that originally came with a Diamond Stealth  
-64 S3-based video card. Under X I frequently got q's inserted into my text  
-(how annoying) especially if I typed very fast (during Netrek for instance,  
-even more annoying because guess what that does :-( ).  
-Switching to a Creative Labs Graphics Blaster MA202 solved the problem.  
-I'm assuming the Stealth 64 did something funny with the timings.'  
-  
-  
-  
-----  
-  
-!!23. Copyright  
-  
-  
-Copyright (c) 1993-2001 by Andries Brouwer. This document may be  
-distributed under the terms set forth in the LDP license  
-at  
-http://metalab.unc.edu/LDP/COPYRIGHT.html or  
-ftp://www.win.tue.nl/pub/linux/LDP/COPYRIGHT.txt.  
-  
-  
-Additions and corrections are welcome.  
-Andries Brouwer - aeb@cwi .nl  
-  
-  
-  
-----  
+Describe [HowToKeyboardandConsoleHOWTO ] here.