在python中初始化libevdev,以便一个设备可以有多个工具工作

2024-10-06 12:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在开发一个基于python的驱动程序,以便在一些旧平板电脑中恢复一些功能

我的草签如下

dev.enable(libevdev.EV_REL.REL_X )
dev.enable(libevdev.EV_REL.REL_Y )
dev.enable(libevdev.INPUT_PROP_DIRECT)
dev.enable(libevdev.EV_KEY.BTN_TOOL_PEN)
dev.enable(libevdev.EV_KEY.BTN_TOOL_RUBBER)
dev.enable(libevdev.EV_KEY.BTN_TOOL_MOUSE)
dev.enable(libevdev.EV_KEY.BTN_STYLUS)
dev.enable(libevdev.EV_KEY.BTN_STYLUS2)
dev.enable(libevdev.EV_ABS.ABS_X,libevdev.InputAbsInfo(minimum=0, maximum=Xmax*10,resolution=1270))
dev.enable(libevdev.EV_ABS.ABS_Y,libevdev.InputAbsInfo(minimum=0, maximum=Ymax*10,resolution=1270))
dev.enable(libevdev.EV_ABS.ABS_PRESSURE,libevdev.InputAbsInfo(0,254))
dev.enable(libevdev.EV_ABS.ABS_TILT_X,libevdev.InputAbsInfo(minimum=-64, maximum=64))
dev.enable(libevdev.EV_ABS.ABS_TILT_Y,libevdev.InputAbsInfo(minimum=-64, maximum=64))
dev.enable(libevdev.EV_KEY.BTN_LEFT)
dev.enable(libevdev.EV_KEY.BTN_RIGHT)


uinput = dev.create_uinput_device()

然而当

[InputEvent(EV_KEY, BTN_TOOL_MOUSE, 1), InputEvent(EV_SYN, SYN_REPORT, 0)]

发送时,在xinput中列出的是笔而不是鼠标 在此之后,尽管随后

[InputEvent(EV_KEY, BTN_TOOL_PEN, 1), InputEvent(EV_SYN, SYN_REPORT, 0)]

工作时,再次将输入工具设置为鼠标后,将忽略发送的位置数据

只有钢笔和橡皮擦能用。 我是不是搞错了? 在Ubuntu 20和FreeBSD 12上测试


Tags: keydevenableabstoolrelevsyn