Re: ISIRI 2901 to Unicode map

From: Raymond Mercier (
Date: Sun Aug 04 2002 - 05:04:56 EDT

At 02:11 AM 8/4/2002 +0430, you wrote:
>Even a very non-trivial reference to somewhere in MSDN I can give to a
>programmer as a start point?

When it comes to setting up a keyboard layout the first thing is to
distinguish between Win95/98/ME and NT4/Win2000.

In the former the layout is fixed by the file kbd**.kbd, where ** is a
label for the country/language. This is basically a data file whose format
is available in the DDK for Windows. Once you know the format and the
conventions about dead keys, etc., you can write an ordinary C-language
program to create a new *.kbd file. Strictly speaking the examples of such
files given in the DDK for Windows show assembly code, but this can
relatively easily be rewritten as C-code, since it is just data, not a program.

In the latter case (NT etc) the layout is fixed by a file kbd**.dll, and to
create this you need to go through the procedures that are available only
if you have the whole DDK for Win2000. The file is still just data, but
since it is transformed into a dll, you cannot just create it with a bit of
DIY programming. In the DDK there are many header files that define the
various layers that go into it. Perhaps it is possible to fillet out the
essential parts to create a stand-alone program which just makes a layout,
but it would not be easy. Basically you have to subscribe to MSDN, and then
get the DDK from one of the DVD's.

Once you have the kayout file you copy it into the \System folder, and
also make a reference to it in the appropriate part of the registry. It
then becomes available from the control panel Keyboard applet, and will be
listed along with all the others on top of that language icon in the
control tray.
As you can see it is all non-trivial. I have done it for Win95, without
using MSDN, but when I went to Win2000, I had no choice but to get MSDN,
even though that includes a vast amount of material that has nothing to do
with keyboard layouts. Now I have made layouts for handling classical Greek
accents, and also the diacriticals needed to transcribe
Arabic/Persian/Sanskrit. These were not unicoded, but I will presently
recreate the layouts to make them unicode compliant.

The layout provided by tavultesoft is not the same thing. This provides an
additional layer that takes effect on top of your existing kbd-file. I once
wrote something about like that, but (in may case at least) it was not as
efficient as a real change in the kbd file.

There might be something of interest to you in the Keyboard program on my
site .

Raymond Mercier

This archive was generated by hypermail 2.1.2 : Sun Aug 04 2002 - 03:21:02 EDT