The problem is: if you virtual keyboard is based on actual focus (you can use Windows API
SendInput
to simulate keyboard on low level, see
http://msdn.microsoft.com/en-us/library/ms646310(v=vs.85).aspx[
^]), an attempt to click on virtual key grabs the focus.
The solution is: the window should be with the "no activate" style, all controls should be non-focusable. To keep your virtual keyboard operational, there is only one way — to make it also the topmost (always on top style). It is not activated (never) and still on top. (How do you think, can you solve such a difficult problem without some exotic features? No! :-))
Good luck,
—SA