Thank you for clarification of the problem. Sorry I am not familiar if the traditional methods of Malayalam input exist and what are they. Please see my comment to the question.
So, I can only explain how the problem looks from the technical point of view, as if no input method existed and you had a problem of creating some.
Of course, to provide a comprehensive input method, you need to augment the whole system, not separate application. Imagine what happens if different applications provide somewhat different input methods (I am afraid if you are already familiar with such messy situation).
Usually, Windows provides a special input method for the input languages with too many characters. It can be a virtual keyboard and some system of keyboard combination.
When you setup additional keyboard for additional culture, you can setup a switch (using special key combination or taskbar) used to switch keyboard input language. You can define keyboard layout for some culture by yourself. To do so, you can download Microsoft Keyboard Layout Creator:
http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx[
^].
You can actually define many more then 100 characters in one keyboard layout. One approach is using
dead key characters. In this approach, one characters is entered used either by one of two keys. With one key, it's done as usual. Say, a single hit on a key 'z' is entered as one single Malayalam character. But you can also define one or more keys as dead key. For example, I use apostrophe key as a dead key, but you will need several dead keys. In English keyboard layout, all the characters are as US English (or whatever you choose), but in other layout, I type apostrophe, and nothing is entered; I need to hit one more character, so 'z or '= combinations give me a single extra character each. To enter apostrophe itself, I can hit '' or "' " (apostrophe followed by blank space). In principle, having several dead keys, you can leave existing Western punctuation characters on there places and leave the way to enter them, and still define many more extra characters. Of course, you don't need any English letter characters in your layout, because you can also switch between layouts.
When you create your layout, you can "compile" it. It will create installation directories (for different processor
instruction-set architectures) with one common setup.exe, so the appropriate DLLs will be installed and register will be modified accordingly for your current system.
As to the virtual keyboards, this is also a doable input method. Please see my past answers:
Application focus getting and losing[
^],
Programming on BACKSPACE button[
^],
Creating a Virtual Keyboard[
^],
Application focus getting and losing[
^],
A software Virtual Keyboard for your WPF apps[
^].
[EDIT]
I do understand that you are doing a different thing. I am trying to convince you that it's most important to solve the problem on the OS level, in a unified way.
However, in a Web application, the appropriate solution can be the on-line virtual keyboard. (not transliteration; but again, I am unfamiliar with the tradition, see my comments again.)
This is also quite doable. The best quality of the virtual on-line keyboard I ever saw is delivered here:
http://winrus.com/index_en.htm[
^].
As all the on-line solutions are in JavaScript, you can simply learn those scripts. But you can also write to the author, Paul Gorodyansky. He promised to send the full keyboard implementation to interested people. And you can learn how it works and modify the code to support Malayalam or anything else.
—SA