Генерация событий мыши, ключа ... и т.д. в Linux - PullRequest
3 голосов
/ 12 октября 2011

Я нахожусь в проекте, где мне нужно будет написать простой драйвер, который принимает ввод с USB-устройства и выполняет действия в графическом интерфейсе в соответствии с полученным сообщением (подобно написанию драйвера USB-мыши, но с моим собственным протоколом)Я искал возможность этого и нашел инструменты автоматизации тестирования программного обеспечения, такие как LDTP, которые уже могут генерировать такие действия, как щелчки мыши и нажатия клавиш.Есть ли другие API для использования?Сколько времени это займет, учитывая, что моя команда хорошо понимает язык C и не имеет опыта работы с Linux?

Ответы [ 2 ]

5 голосов
/ 12 октября 2011

У меня есть два основных варианта:

  • X11: используйте расширение XTest (XTestFakeDeviceKeyEvent, XTestFakeRelativeMotionEvent и т. Д.)
  • Модуль ввода.

Первый использует поддельные устройства ввода (попробуйте запустить xinput list в оболочке), которые присутствуют на большинстве (всех?) X серверов. Каждый вызов одной из функций XTestFake* генерирует входное сообщение X.

Второй - модуль ядра, который позволяет пользовательскому приложению создавать устройства ввода и отправлять события ввода. Вы просто открываете устройство /dev/uinput, отправляете несколько ioctl s для его настройки, а затем write непосредственно вводите события.

И, конечно, вы можете написать драйвер входного ядра!

2 голосов
/ 12 октября 2011

Когда мне нужно было сделать то же самое в Windows, я посмотрел на исходный код VNC Server и нашел все, что мне нужно было знать. Версия для Linux должна иметь то, что вам нужно, или, по крайней мере, направить вас в правильном направлении. В Linux существует два вида серверов VNC: те, которые работают на виртуальных дисплеях, и те, которые работают на реальных. Вы хотите посмотреть на тот, который работает на реальном дисплее, например этот .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...