Я только что поиграл с экранной клавиатурой и увидел, что это легко. Вы просто должны вызвать его, используя Runtime.exec()
или ProcessBuilder
. Затем, если ваше приложение потеряло фокус, верните его обратно в приложение, тогда как активный элемент должен быть текущим редактируемым элементом (текстовое поле, текстовая область и т. Д.). Теперь, когда пользователь печатает на виртуальной клавиатуре, символы записываются в ваше приложение.
EDIT
Есть некоторые трудности с выполнением osk.exe из Java. Выдает IOException:
java.io.IOException: Cannot run program "C:\Windows\System32\osk.exe": CreateProcess error=740, The requested operation requires elevation
Хитрость заключается в запуске команды через командную оболочку (cmd
):
Runtime.getRuntime().exec("cmd /c C:\\Windows\\System32\\osk.exe");
Эта строка отлично работает на моей машине.