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 http://ourworld.compuserve.com/homepages/RaymondM .

Raymond Mercier





Reply via email to