2

我正在尝试编写触摸事件。我正在使用相机来跟踪手,所以我需要两个指针并且我需要显示它们。

这是我尝试过的,但它什么也没做:

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 工作,但也欢迎回答。

4

1 回答 1

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 日志文件。

于 2018-03-30T13:46:41.203 回答