Не могу записать сенсорные события в uinput, используя python-uinput
Я пытаюсь написать сенсорные события. Я использую камеру для отслеживания рук, поэтому мне нужны два указателя, и мне нужно отобразить их.
Это то, что я пытался, но это ничего не делает:
import uinput
import time
device = uinput.Device([
uinput.BTN_TOUCH,
uinput.BTN_TOOL_PEN,
# uinput.INPUT_PROP_POINTER, # This property doesn't exist... what is the alternative?
uinput.ABS_X,
uinput.ABS_Y,
])
time.sleep(1)
device.emit(uinput.ABS_X, 5)
device.emit(uinput.ABS_Y, 5)
device.emit(uinput.BTN_TOUCH, 1)
for i in range(20):
time.sleep(0.01)
device.emit(uinput.ABS_Y, 5 * i)
device.emit(uinput.BTN_TOUCH, 0)
Тем не менее, использование мыши работает:
import uinput
import time
device = uinput.Device([
uinput.BTN_LEFT,
uinput.BTN_RIGHT,
uinput.REL_X,
uinput.REL_Y,
])
time.sleep(1)
for i in range(20):
time.sleep(0.01)
device.emit(uinput.REL_Y, 5)
Но мне нужно абсолютное, а не относительное позиционирование.
Могу ли я увидеть события от терминала для отладки?
Я хочу иметь возможность иметь 2 указателя, абсолютное позиционирование, касание / щелчок, наведение (BTN_TOOL_PEN), и я хочу разрешить перетаскивание / прокрутку. Любое руководство относительно того, какие события мне следует использовать, и простой рабочий пример были бы великолепны!
Я не мог заставить evdev работать, но ответы на это тоже приветствуются.
1 ответ
Я предполагаю, что вы используете эти события устройства на сервере где-нибудь? X11? Удалить uinput.BTN_TOOL_PEN
и определить диапазон для каждого оценщика:
uinput.BTN_TOUCH,
uinput.ABS_X + (0, 2**24-1, 0, 0),
uinput.ABS_Y + (0, 2**24-1, 0, 0),
uinput.ABS_PRESSURE + (0, 255, 0, 0),
Если у вас все еще есть проблемы, следите за файлом журнала Xorg.