How to detect if the on-screen keyboard is visible
You can use WinAPI function IsWindowVisible.
For Visual Basic, it looks like this:
Dim hWnd As Long 
hWnd = FindWindow("TMainKeyboardForm", vbNullString) 
If (IsWindowVisible(hWnd)) Then ........ 
    