Во-первых, это правильно, что вы можете захватывать события только в окне приложения Java.Во-вторых, неправильно, что ваша проблема может быть решена только с использованием JNI API.Я попробовал следующий трюк.
Создание прозрачного полноэкранного окна.Захват событий на нем.Когда вы захватили нажатие клавиши, быстро исчезнет окно и смоделируйте нажатие той же клавиши, используя робот.Затем снова создайте прозрачное полноэкранное окно.
Это уродливый трюк, но это чистая Java, и пользователь ничего не видит.Удачи.