mKEYB readme.txt ******* WHAT mKEYB is ******************** mKEYB is a minimum keyboard driver for xxDOS, requiring only ~500 bytes of memory to support international keyboards (russian 452, german 474, spanish 718 byte) mKEYB is also an interesting demonstration of 'The Art of writing small TSR's in High Level Language' ** provided drivers ********************** ***languages that seem to be OK (verified by one national user) mkeyb BE - belgium mkeyb GR - german mkeyb GRC - german with COMBI's mkeyb SP - spanish (with COMBI's) (codepage 850) mkeyb NL - dutch mkeyb UK - united kingdom mkeyb BR - Brazil (portugese) mkeyb BX - Brazil (portuges) extended mkeyb RU - russian - to be used with codepage 866 mkeyb PL - polish mkeyb HE - hebrew mkeyb FR - french (by snoopy81) ***languages that are not verified, just more or less correct ***translated from the Xkeyb keyboard definition tables mkeyb NO - norwegian mkeyb LA - latin america mkeyb IT - italy mkeyb DK - daenish mkeyb PO - portugese mkeyb SU - finnish mkeyb SV - swedish mkeyb SF - swiss french mkeyb SG - swiss german mkeyb SL - slovenian ******* Implementation notes ****************** mKEYB is based on the idea, that the keyboard is already (mostly) handled by the system BIOS, and that most keys are already correctly handled by it. this includes: function keys, cursor keys, ctrl,alt,del,shift, CtrlAltDelete, SysKey, ALT+numberPad, and most characters. also, all INT16 functions are already done by the BIOS. so mKEYB relies mostly on the BIOS to do what must be done, and only exchanges a few keys, as required by the national keyboard layout. mKEYBxx loads itself as high as possible; there is no need to LOADHIGH mKEYBXX ******* changing an existing language ****************** to change an existing language, you need Borland's Turbo C++ 1.01; newer versions should work as well. please modify BUILD.BAT to your compiler directory. all keyboard definitions are located in a "keydefXX.h" file, where XX is the language you want to modify. change the definition file (see below), then run BUILD.BAT this should generate a new mkeybXX.exe testing the new keyboard handler is easy: start mkeybXX with any argument, and mkeyb will go into a debug mode, where all keys you type are shown; press ESCape to end this mode. ******* KEYDEFxx.H table layout: All keyboard definitions should be created, using some predefined MACROS. these are PUNCT(scan,lcase,ucase) upper and lower case character definition ALPHA(scan,lcase,ucase) like PUNCT, but obeys CAPSLOCK rules PUNCT_CTRL(scan,lcase,ucase,ctrl) ALPHA_CTRL(scan,lcase,ucase,ctrl) like above, but additionally a CtrlCharacter is defined ALTGR(scan,code) this scancode generates addition char if ALTGREY is pressed ALTGRSHIFT(scan,code1,code2) like ALTGR, but shifted key generates different key PUNCT_ALTGR(scan,lcase,ucase,altgr) PUNCT_CTRL_ALTGR(scan,lcase,ucase,ctrl,alt) REPLACE(scan,code) replaces one scancode by another one (german keyboards have 'Y' and 'Z' swapped) COMBI tables: these are not needed by all languages, but some (like spanish catalan) require them. they mostly define '`^ + aeiou COMBI define characters, that are generated by two sequential keystrokes, like '+A, `+A, ~+A, for some swedish characters. if needed, COMBI must be defined in the keydefXX.h file. COMBI keys work like - for example for ^+A main table: scancode for '^', NORMAL, COMBI11, 'x', 'y' combi1table[] = { scancode for 'A', lower case a+^, upper case A+^ scancode for 'E', lower case e+^, upper case E+^ ... scancode for ' ', character '^' itself,character '^' itself } the last line is also used as default, for the case, that the next key is not 'AEIOUN', so ^+X will generate both '^' and X ******* adding a new language ****************** adding a new language (say japanese = JP) decide, if you need COMBI characters or not open MAKEFILE, search LANG_GR duplicate this section, and replace all GR with JP open KEYBD.C, search LANG_GR again, and duplicate again. search an existing KEYDEFXX.H, that more or less closely resembles your layout (say keydefGR.H), and copy it to keydefJP.h if there already exists (in xkeyb) a key definition, run C:\mkeyb> FC GR.key JP.key add these changes to keydefJP.h run BUILD.BAT, and you should have a mKEYBJP.EXE now, ready to be tested (see above) ************************************************* have fun with it 5 jun 2002 tom ehlert