This is quite doable, but will need some good amount of work.
But with ASP.NET it would be too slow to be practical. The keyboard is supposed to enable fast printing. If every key press will cause a postback, it will drive the users crazy. This problem is quite solvable purely on the client side, and this is the best approach.
Now, how? I would recommend you to take a look at one of the Web keyboard by Paul Gorodyansky:
http://winrus.com/kbd_e.htm[
^],
http://winrus.com/index_en.htm[
^],
and this is the keyboard itself:
http://winrus.com/keyboard.htm[
^].
Sorry, the keyboard is Russian+English, not exactly what you need, but it does not matter for your purpose. If you need to develop your own, it will help you. The most important feature is the convenience and possibility to use the computer keyboard, not just the mouse. And of course, multiple layouts which you can quickly change while typing.
Seriously. This is a very good work, and the problem has a number of delicate moments, so I really advise you to spend time but learn this product.
Now, it's pretty difficult to copy the scripts and make them working, but Paul promised to send everyone a personal copy on request, for free. I would advise you to openly explain to him your purpose.
Good luck,
—SA