问题标签 [evdev]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
835 浏览

x11 - xorg 触摸屏:绝对位置被忽略

我正在尝试使用带有 X (1.14.7) 的 EETI EXC7200 触摸屏。识别触摸屏并处理事件。TS 发送绝对坐标并使用 evdev 驱动程序(绝对模式)。但是,当我移动到屏幕边缘(并且 X 或 Y 达到 0)时,指针会捕捉到窗口的中心。之后任何运动都有一个偏移量(取决于实际位置和角点之间的差异)。

为了测试这一点,我使用 XQueryPointer 的坐标在屏幕上绘制指针。

这是 evtest 的输出:

并且(同时)通过 xinput 翻译输出:

xinput 正在输出位于中心的额外运动事件。但只有当我靠近触摸屏边缘时。

我究竟做错了什么?我应该看什么?感谢您的任何帮助或提示。

0 投票
1 回答
1625 浏览

python - 如何使用 python evdev 向设备发送隆隆声效果

我喜欢使用python evdev向设备发送隆隆声效果。这应该通过需要缓冲区对象作为输入的函数来实现。upload_effect()

capabilities()揭示了:

如何创建该缓冲区?

0 投票
1 回答
3279 浏览

linux - X11 EvDev 触摸屏驱动程序:禁用长按右键单击桌面

我正在设置一个自助服务终端系统,它会在启动时自动全屏加载网页。标准的东西。

问题是一个连接的 Acer 触摸屏,它与 evdev 驱动程序一起工作得很好……但它工作得有点太好了。如果用户在屏幕上按住不放,则会生成右键单击并出现上下文菜单。这会导致界面出现一些问题,我需要禁用此功能,但我还没有找到方法来做到这一点。

X11 配置文件不是我有太多经验的东西。有没有人有摆脱这个功能的经验?是否可以将触摸屏映射到通用鼠标驱动程序?

系统是: - Ubuntu Mate 15.04 - Raspberry Pi 2 - 窗口管理器:Matchbox - 浏览器:Chromium

到目前为止,我对 /usr/share/X11/xorg.conf.d 中的 10-evdev.conf 文件进行了以下更改

它对正在生成的右键单击事件或出现的上下文菜单没有任何影响。但是,如果我输入:

触摸屏根本不起作用,所以我相信这是改变的正确部分。

0 投票
1 回答
106 浏览

touch - 两个 xscreens uinput 多点触控设备,第二个 x 屏幕上的坐标错误

首先嗨,这是我在stackoverflow中的第一个问题:)

硬件设置是 2 个 nvidia gtx980 GPU,每个 GPU 连接到 3 个显示器。拼接墙布置为一排 6 台显示器。我们正在使用专有的 nvidia 驱动程序。xserver 版本是 1.15.1 (7.7)。

我们创建了一个 uinput 多点触控 ABS (MT) 设备,该设备连接到与核心指针不同的主设备。ABS_X 和 ABS_MT_POSITION_X 的最大值和最小值根据两个 xscreen 的大小 (0, 11520 - 1) 设置。这是使用 xinput list [device id] 检查的。

由于我们使用了两个 GPU,我们无法创建一个大的 xscreen,但我们安排了 2 个 xscreen(每个 GPU 一个),每个 xscreen 上对齐了三个显示器。

问题出在第二个 xscreen (xscreen1) 上。当我们发出 x 坐标高于 5760(第一个 xscreen 的大小)的触摸事件时,xserver 会在远处的 x 坐标上报告点(可能在第二个 xscreen 的末尾或更远)。我们已经从 xscreen0 开始检查了这一点并移至第二个。y 坐标得到正确报告(因为两个 xscreen 都是 y 对齐的)。

虚拟多点触控设备的校准矩阵是单位矩阵。如果将 uinput 设备创建为 ABS 单点设备(我猜像 wacom 数位板),则 x 坐标将正确报告。

我认为问题可能出在 evdev 或 xserver 内部(因为我已经阅读了在服务器内部而不是在 evdev 中校准的新版本)。如果是这种情况,任何关于这可能发生在哪里的提示都会很棒。如果不是这种情况,任何帮助都将受到高度赞赏。

0 投票
1 回答
1460 浏览

python - 中断阻塞的 evdev 读取

我有一个模块可以从条形码扫描仪中捕获所有读数。我的问题是我无法正确关闭它。发送 KeyboardInterrupt 或 SystemExit 信号后,它仅在我扫描条形码时停止。

我尝试将此方法添加到 BarcodeScanner 类,但它仍然不起作用:

我怎样才能做到这一点?

可中断的.py

条形码扫描仪.py

0 投票
1 回答
1083 浏览

linux - Linux 虚拟键盘和 evdev

我为 Linux 编写了一些软件,它使用 libevdev 进行输入处理。

令我惊讶的是,我发现的所有虚拟屏幕键盘都模拟了高级 X Window Server 事件。因此,udev 无法识别它们,不会出现在 /dev/input 文件夹中,并且在 evtest 中不可见。

有没有足够低级的软件键盘?或者也许有一些技巧?

0 投票
0 回答
2644 浏览

python - 适用于 Windows 10 的 Python evdev 等效项

是否有可以直接从 Anaconda 命令行安装的 Windows-10 64 位 evdev 等效版本?例子:

尝试从 anaconda 命令行安装 pyHook 失败:

0 投票
2 回答
1732 浏览

python - 等效于 OSX 的 Python evdev

我编写了一个 python 脚本,用于轮询 evdev 的 HID 条形码扫描仪(模拟键盘):该脚本在 Linux 平台(Ubuntu)上运行良好。是否有适用于 evdev 的 OS X Python 等效项允许对现有 python 脚本进行少量移植?

如果您有 Python 经验并已将其配置为 HID 设备输入,请在您的回复中说明这一点。

0 投票
0 回答
68 浏览

chromium - Chromium 中的自动输入是随机填充的

Chromium 中的自动输入是随机填充的

案子

我想模拟没有任何硬件连接到我的计算机的条形码扫描仪。据我所知,条码扫描仪的行为就像键盘一样,所以我想模拟一个键盘 HID 设备。

环境

Chromium 版本 53.0.2785.143 基于 Ubuntu 构建,在 LinuxMint 17.2(64 位)上运行

尝试

1) python中的evdev

2)使用 C++ 写入 dev/input/event*

3) pyautogui

尝试 1 和 2 的行为类似。两者都尝试写入对应于计算机键盘的 dev/input/event* 文件。但是对于循环中的多个按键,结果不是我所期望的:如果我模拟按键重复,结果是随机的。此外,一些键盘键开始打印另一个与它们不对应的字符,直到终端关闭。

所以我尝试了 3,它打印了我想要的东西,但结果在 Chromium 中随机出现。

问题

pyautogui 在 Firefox 中工作,但在 Chromium 中随机写入输入。看起来 Chromium 正在避免在任何网站的输入表单中自动输入。

蟒蛇程序:

例子

它在 Firefox 中打印 1234567890123;

它在 Chromium 中打印 2413123098765。#13位随机数

问题

有人知道为什么 Chromium 会这样吗?

0 投票
0 回答
1404 浏览

linux - uinput 并通过 chmod 或规则设置文件权限

我在这里使用 evdev 和 uinput编写了一个伪和弦键盘重映射器。我不想让我的普通用户读取和写入 /dev/input/event* 和 /dev/uinput 的权限,所以我创建了一个新用户 (hopr),其唯一目的是运行程序。在尝试使其工作时,我注意到 uinput 的一些非常特殊的行为,我希望有人可以解释。

为了确保这是关于 uinput 而不是别的,我使用 python-evdev 编写了一个简单的测试脚本:

我还创建了一个名为 hopr 的新用户和一个名为 uinput 的新组,并将 hopr 添加到组 uinput 和 input(以读取事件)。计划是将 /dev/uinput 的组更改为 uinput,并且该组只有 rw 权限。两个用户的组是:

首先,我只是尝试在不更改组且在 /etc/udev/rules.d 中没有额外规则的情况下运行脚本。默认情况下,XUbuntu 16.04 中 /dev/uinput 的权限对于用户 root 和组 root 是 rw。

看到我的普通用户能够运行脚本但新用户不能运行,我有点惊讶。接下来,我使用 chmod为每个人添加了 rw 权限:

好的,正如预期的那样。接下来,我再次为所有人删除了 rw 并使用 chown将组更改为 uinput :

同样,这是出乎意料的,但情况变得更糟。接下来,我再次为每个人添加了 rw 权限,但保留了组 uinput

现在我真的很困惑,但是使用 chown将组更改回 root使它再次工作

显然这里有些东西我不明白,所以我也尝试使用 /dev/udev/rules.d 中的规则正确设置它:

令我惊讶的是,现在一切都(几乎)按预期工作!受限的 hopr 用户可以在没有 rw 权限的情况下运行程序。唯一的问题是为什么我的普通用户也可以运行它。

所以,我的问题是:

  1. 为什么我的默认用户可以使用 /dev/uinput 尽管文件权限说我不应该能够?我该如何关闭它?
  2. 为什么我不能只是 chown 组?为什么我必须在 /etc/udev/rules.d 中使用规则?
  3. chmod/chown、rules 和 uinput 到底发生了什么?为什么受限制的 hopr 用户不能使用 uinput,尽管当组被 chown 为 uinput 时,每个人都 rw,但是当组是 root 时它可以?
  4. 在 /etc/udev/rules.d 中使用规则是设置它的正确方法吗?我可以期望这样的设置适用于所有/大多数 linux 版本吗?我注意到 Ubuntu 15.04 对 /dev/uinput 有不同的默认权限。