libkeymap: Do not dump diacr values if lk_dump_keymap called
[platform/upstream/kbd.git] / doc / README.Crosser
1 # International console driver fixes for Linux kernel .99pl13
2 # Eugene G. Crosser <crosser@pccross.msk.su>
3
4 This package provide fixes in the kernel (console.c, keydoard.c and vt.c),
5 setfont and mapscrn utilities, and fixes to the loadkey utility.
6 setfont loads custom EGA/VGA fonts, mapscrn specifies screen output mapping,
7 and loadkeys with this fixes provides "AltGr-Lock" state of the keyboard,
8 and makes possible to specify which characters are alphabetic and therefore
9 should be affected by the CapsLock.
10
11 make all        -       compile utilities and binary tables
12 make apply      -       apply cdiffs to the kernel code & .h files
13 make install    -       install utilities in the /etc directory
14
15 Utilities make use of ioctl() entries added to the kernel as follows:
16
17 "setfont" accepts binary font from the file specified as a paramter.
18 File size may be 2048, 3584 and 4096 bytes for 8x8, 8x14 and 8x16
19 fonts respectively.
20
21 "mapscrn" accepts a 256 byte translation table from the file specified as a
22 parameter and passes it to the "user definable" (fourth) mapping table
23 in the kernel. First 32 bytes of the file (control characters) are always 
24 ignored. All screen output will be translated if a "\033(K" (or "\033)K")
25 sequence was outputted to select the "user definable" table.
26
27 All this witchkraft with the output mapping is nesseccary because of
28 VGA architecture: it extends the character bitmap from 8 to 9 columns
29 for some interval of codes on the hardware level. This is appropriate
30 for certain graphic characters, but inappropriate if you have letters
31 in that place ot the character table. In the latter case, you can place
32 character bitmaps on not-extendable positions in the font table, and
33 use appropriate mapping table. This is done for Cyrillic character set
34 "koi8-r" (RFC1489).
35
36 The fixes in loadkey utility are necessary because of two reasons.
37 First, non-Latin based character sets (such as Cyrillic) require a
38 special lock state for the keyboard. Current "shift-locks" implementation
39 in the keyboard driver is inconvenient, as it does not allow "switchback"
40 when the "shift" key is pressed while "shift-lock" is active.  Second, 
41 with non-ISO-8859 compliant character sets one cannot easily figure out 
42 if a certain character is a "lowercase letter" and should therefore be 
43 affected by CapsLock.  A plus sign ('+') in front of the character 
44 definition in the keymapping table is used to identify this character 
45 as "affectable by CapsLock". Loadkeys utility treats lowercase latin 
46 characters ('a'-'z') as affectable in any case. Effect of CapsLock is 
47 to invert the "shift" state (unlike the original driver, where it always
48 "shifts up").
49
50 Note that if you need to make custom screen mapping default, you will
51 have to output the magic escape sequence ("\033(K" or "\033)K") to every
52 virtual screen in use. That can be done from /etc/profile.