# International console driver fixes for Linux kernel .99pl13
# Eugene G. Crosser <crosser@pccross.msk.su>

This package provide fixes in the kernel (console.c, keydoard.c and vt.c),
setfont and mapscrn utilities, and fixes to the loadkey utility.
setfont loads custom EGA/VGA fonts, mapscrn specifies screen output mapping,
and loadkeys with this fixes provides "AltGr-Lock" state of the keyboard,
and makes possible to specify which characters are alphabetic and therefore
should be affected by the CapsLock.

make all	-	compile utilities and binary tables
make apply	-	apply cdiffs to the kernel code & .h files
make install	-	install utilities in the /etc directory

Utilities make use of ioctl() entries added to the kernel as follows:

"setfont" accepts binary font from the file specified as a paramter.
File size may be 2048, 3584 and 4096 bytes for 8x8, 8x14 and 8x16
fonts respectively.

"mapscrn" accepts a 256 byte translation table from the file specified as a
parameter and passes it to the "user definable" (fourth) mapping table
in the kernel. First 32 bytes of the file (control characters) are always 
ignored. All screen output will be translated if a "\033(K" (or "\033)K")
sequence was outputted to select the "user definable" table.

All this witchkraft with the output mapping is nesseccary because of
VGA architecture: it extends the character bitmap from 8 to 9 columns
for some interval of codes on the hardware level. This is appropriate
for certain graphic characters, but inappropriate if you have letters
in that place ot the character table. In the latter case, you can place
character bitmaps on not-extendable positions in the font table, and
use appropriate mapping table. This is done for Cyrillic character set
"koi8-r" (RFC1489).

The fixes in loadkey utility are necessary because of two reasons.
First, non-Latin based character sets (such as Cyrillic) require a
special lock state for the keyboard. Current "shift-locks" implementation
in the keyboard driver is inconvenient, as it does not allow "switchback"
when the "shift" key is pressed while "shift-lock" is active.  Second, 
with non-ISO-8859 compliant character sets one cannot easily figure out 
if a certain character is a "lowercase letter" and should therefore be 
affected by CapsLock.  A plus sign ('+') in front of the character 
definition in the keymapping table is used to identify this character 
as "affectable by CapsLock". Loadkeys utility treats lowercase latin 
characters ('a'-'z') as affectable in any case. Effect of CapsLock is 
to invert the "shift" state (unlike the original driver, where it always
"shifts up").

Note that if you need to make custom screen mapping default, you will
have to output the magic escape sequence ("\033(K" or "\033)K") to every
virtual screen in use. That can be done from /etc/profile. 
