Como detectar se o teclado na tela está visível

Você pode usar a função WinAPI IsWindowVisible.

Para Visual Basic, é assim:
Dim hWnd As Long 
hWnd = FindWindow("TMainKeyboardForm", vbNullString) 
If (IsWindowVisible(hWnd)) Then ........