Как определить, видна ли экранная клавиатура

Вы можете использовать функцию WinAPI IsWindowVisible.

Для Visual Basic это выглядит так:
Dim hWnd As Long 
hWnd = FindWindow("TMainKeyboardForm", vbNullString) 
If (IsWindowVisible(hWnd)) Then ........