XKeyb and MKeyb

The following technote is by Aitor:

Just in order to avoid some confussion, I'd like to send to you this excerpt from the versions.txt file at ibiblio's xkeyb section, which briefly details similarities and differences between mkeyb and xkeyb, and a brief guide of tips about when to use one or the other.


MKeyb and XKeyb are two open source drivers suitable to be used with FreeDOS. Both have been designed so that you can choose the one that fullfills your requirements as well as possible. Similarities are:

- Both internationalize your keyboard

- Both are resident programs, and you are advised to add either in your AUTOEXEC.BAT configuration file

- Both support COMBIs, so that you can produce diacritics

- Both are capable of getting to a disabled mode

- Both are open source software

- Neither implement the change codepage function [:-(]

Differences are:

- XKEYB is configurable through configuration files without recompiling: a single XKEYB.EXE file will work with several different configurations, specified in the .KEY files (ex. SP.KEY, GR.KEY, FR.KEY, UK.KEY,...); MKEYB is configurable upon recompilation, and thus there are different executables for different layouts (MKEYBSP.EXE, MKEYBGR.EXE, MKEYBFR.EXE, MKEYBUK.EXE, ...)

- XKEYB and MKEYB support enabling/disabling the COMBI section; in XKEYB this is made via the .KEY files, and in MKEYB upon recompilation

- XKEYB provides a full KEYB API through int 2F. MKEYB provides only AD82h and AD83h functions, and will therefore probably be not visible to other drivers

- XKEYB provides an additional API (user and programmer configurable) through int2Fh AD9Xh

- MKEYB is ONLY around 4Kb executable size, and around 600 bytes resident size. XKEYB is around 12Kb executable size, and around 4Kb resident size

- XKEYB serves interrupt 9h, whereas MKEYB works at INT 15h level. MKEYB relies on BIOS doing most of its job, whereas XKEYB relies mostly on hardware and on its own code

- XKEYB was originally written by Dietmar Höhman, in TurboPascal and assembler, and is currently maintained by Aitor Santamaría Merino; MKEYB has been written in C and assembler by Tom Ehlert


Use XKEYB if:

- you want to reconfigure the driver without recompiling

- you are working with more than three different layouts and want to minimise disk space

- you need a driver that identifies itself through INT 2Fh, and is responsive to KEYB calls, avoiding other drivers to be loaded

- you want to use the additional ("X") functionalities, like XFunctions or XStrings

- you use one of the layouts for which MKEYB hasn't (YET) been ported, such as BE, BR850, CF, DVORAK, FR, HU, PC850, PC860, PL, TR, US and US-LV)

Use MKEYB if:

- amount of free memory is critical in your system

- disk space is critical in your system

- you want a keyboard driver just for the key characters, and need no extra functionality, you don't plan to use other keyboard drivers, and you don't have special software requiring KEYB to be loaded