Java / Преобразовать клавишу с клавиатуры или мыши в другую клавишу

#java #jna #mouse-hook #jnativehook #keyhook

#java #jna #мышь-крюк #jnativehook #keyhook

Вопрос:

У меня есть приложение swing Java (A), которое запускает другое приложение (B) Runtime.getRuntime().exec() при нажатии определенной кнопки.

Можно ли установить определенный ключевой хук, чтобы, когда приложение (B) открыто и активно, оно меняло кнопки (например, когда вы нажимаете «Q», фактически нажимается кнопка «H» и так далее). И аналогичная ситуация для мыши (например, если нажата «Mouse Mid» или «Колесико мыши«, фактически нажата другая кнопка, например «T«).

В идеале это должно работать для всех операционных систем, если это возможно, но в первую очередь для Windows.

Пожалуйста, скажите мне, возможно ли это вообще реализовать, я буду рад любым советам или примерам.

Комментарии:

1. Вам нужно работать на уровне операционной системы, поэтому решение должно быть разным для каждой платформы, нет?

2. @Abra Наверное, да, я просто никогда не сталкивался с собственными функциями, и для меня это новая область. Я прочитал и посмотрел видео о библиотеке JNA / JNI / Jnativehook. Но во всех примерах, которые я видел, можно было поймать только входящее значение ключа. Я не знаю, в каком направлении искать, чтобы изменить и перенести его.

Ответ №1:

Поскольку вы хотите подключиться к низкоуровневым событиям операционной системы. Это может потребовать реализации JNI, которая может быть сложной и потребует библиотек ОС. На Github доступна одна библиотека Maven https://github.com/kristian/system-hook

Он содержит необходимые библиотеки, как указано в Readme.md досье. Я этого не пробовал. Надеюсь, это должно сработать.

Комментарии:

1. Это хорошая библиотека для захвата нажатия клавиши / мыши, отпускания и так далее. Но мне все еще не ясно, как изменить входящий ключ на желаемый?