Cioè quando l'utente dà il focus ad una qualunque textbox nel sistema o altra applicazione, tu vuoi aprire/mostrare la tua tastiera virtuale?
Questo è altamente più critico e difficile. E ti spiego anche con un caso (nemmeno tanto) particolare: se fosse un'altra applicazione Java, magari usa Swing come interfaccia grafica. I componenti Swing sono disegnati e gestiti da codice Java e NON "esistono" per il sistema.
Quindi (correggetemi se sbaglio) non c'è una API nativa che ti permetta di sapere dell'esistenza di una textbox Swing, né quindi che le è stato dato il focus. E anche riferito a componenti "nativi" del sistema, il focus può essere dato anche a pulsanti, listbox, ecc...
La cosa più semplice/banale è tenere la finestra della tua tastiera come "always-on-top". A certe condizioni (minimo: che la funzionalità sia supportata), vedi l'uso e la documentazione di setAlwaysOnTop di java.awt.Window.