Это будет зависеть от платформы вашего оборудования и целевого приложения. Например, если вы пишете Java-программу, которая отправляет нажатия клавиш в приложение Windows, вы, вероятно, можете использовать сообщения Windows через JNI. Для собственных приложений на устройствах, таких как мобильные телефоны, вам может потребоваться перейти на более низкий уровень API устройства.