Распространение событий мультитач на приложения

Распространение событий мультитач на приложения

Моя цель — использовать стандартные библиотеки для распознавания жестов и использовать эти события с Java 8. Я знаю, что для Ubuntu есть стек распознавания жестов (grail, geis), но я пока не понимаю, как все это объединить.

Я использую сенсорную пленку eGalaxTouch (серия PCAP7200) с драйвером EETI eGTouch (версия eGTouchD: 2.5). Мой Linux Mint 17 распознает это устройство как мышь.

Я прочитал события устройства /dev/input/eventXи обнаружил, что оно выдает события мультитач ( ABS_MT_SLOT, ABS_MT_TRACKING_ID, ABS_MT_POSITION_X, ABS_MT_POSITION_Y).

Есть ли возможность обнаружить жесты с помощью стандартных функций Linux и распространить эти события на приложение (в моем случае приложение JavaFX2)? Или мне придется распознавать жесты внутри моего приложения, что означает, что я не смогу использовать никакие библиотеки Linux?

Существует ли специальный тип устройства для мультисенсорных устройств, помимо стандартной мыши?

решение1

Стандартные библиотеки Linux не имеют интегрированной технологии для жестового программирования; тем не менее, вы можете считывать данные с устройств xinput, и я покажу вам, как это сделать, но сначала я дам вам ссылки на несколько статей об истории программирования xInput, жестовом программировании для X и, наконец, на команды и внешние библиотеки, которые, как я считаю, будут вам полезны.

История мультитач LWN.Net Xinput

Это история расширения xorg-multitouch. Она касается жестового программирования и ссылается наПроект программирования жестов uTouch.

Эти две информативные статьи являются хорошим источником информации и должны дать вам представление о том, на каком уровне находится эта технология сегодня.

Руководство по XInput

$> xinput --list

Приведенная выше команда выведет список ваших устройств xInput.

Необходимую вам функциональность жестов можно реализовать в вашем приложении, но существуют и другие варианты, например, проект программирования жестов uTouch, которые также могут заполнить этот пробел.

Что касается считывания входных данных с устройства, я могу порекомендовать один из двух пакетов.

XEV считывает события из xInput

$> xev --display :0 -id $WINDOW_ID >> to.file
  • [--display] — номер вашего дисплея xserver (у меня :0)
  • [id] — ваш идентификатор окна # (его можно получить с помощью команды типа $> wmctrl -lG)

События чтения Key-Mon из xInput

Вышеуказанный скрипт Python, который делает то же самое, но выводит события ввода. Я считаю, что XEV будет решением для вас, потому что XEV записывает геометрию событий ввода.

Надеюсь, это поможет!

Связанный контент