【问题标题】:Can't write touch events to uinput using python-uinput无法使用 python-uinput 将触摸事件写入 uinput
【发布时间】:2018-09-05 02:59:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: python linux touch evdev uinput


    【解决方案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 日志文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      相关资源
      最近更新 更多