问题标签 [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 回答
722 浏览

linux - evdev:查找游戏手柄轴的“剩余”值

如何找到游戏控制器任意轴的静止值是多少?例如,在我的 Dualshock 4 上,以下是来自的相关数据evtest

在上面的例子中,我在跑步时一直扣动正确的扳机evtest;因此,valueforABS_Z变为 255 而不是 0。那么,既然我们不能value用于此目的,那么他们有什么方法可以找出静止值是多少?


编辑:我正在使用libevdevAPI 来访问游戏手柄。上面打印的信息可以从input_absinfo结构中访问。

0 投票
1 回答
295 浏览

python - 使用 python uvdev 设置绝对光标位置

我正在尝试在 python 中模拟图形输入板,因此,我需要能够设置光标的绝对位置。我试过python-evdevpython-libevdev,但我无法设置绝对位置。将值写入 EV_ABS ABS_X 和 ABS_Y 根本不会对光标位置产生任何影响。值得一提的是,模拟按钮和相对定位可以完美运行。

我在 x11 上使用 Manjaro 4.19 和 Gnome。

我将不胜感激,并在此先感谢您。

这是必须能够设置绝对光标位置的简单代码,但事实并非如此。

0 投票
0 回答
668 浏览

python - evdev - 终止读取循环

我正在 Raspberry Pi 上开发一个小型应用程序。对于这个问题,我可以归结为旋转编码器的使用。我发现使用 dtoverlay 对我来说是最方便的方式。因此,我在 python3 中使用了 evdev 模块。我当前的代码如下所示:

现在我的问题是,我怎样才能以最好的方式终止这个程序。我无法停止线程,因为 for 循环等待设备上的事件。我想以某种方式模拟一个事件,但我不确定(=我不知道)如何做到这一点。我在网上没有找到任何参考资料,我想知道为什么..

我感谢您的帮助!

0 投票
1 回答
838 浏览

python-3.x - 使用 evdev InputDevice 退出 python 程序会导致错误

我正在尝试使用 evdev 将控制器作为输入设备。当我退出程序时,我收到一条错误消息,指出删除方法(超级)至少需要一个参数。我看过,但无法找到正确处理此问题的解决方案。

该程序:

当我使用特定键时,我会中断循环,从而导致以下错误消息:

当我退出使用时也会发生同样的情况^C。任何想法如何正确处理出口?

0 投票
0 回答
124 浏览

python - 关于python evdev rfid卡扫描仪数据的问题

谁能帮我弄清楚如何使用evdevpython模块?我有一个 USB 卡扫描仪,我想用它来扫描卡并让树莓派通过 Kodi 媒体播放器播放一些音乐文件。我可以扫描卡并从中获取信息,但由于此读卡器被识别为键盘,它也会向 kodi 发送按键。有没有办法强制 python 只读取卡上编码的卡号,而不是在最后发送额外的 enter 按键?

例如,当我在打开的文本文件编辑器中扫描卡片时,kate它看起来如下所示:

新行实际上是一个 enter 按键,它在 kodi 中执行各种不良行为(取决于您所在的屏幕,它会按随机按钮),它也会弄乱我的 python 代码行为。

所以问题是:我可以告诉使用evdev模块的读者只阅读数字而不是 EOL 字符吗?

不确定我是否说得通,所以如果您有任何问题,请询问他们。

0 投票
0 回答
230 浏览

python - 用 raspberrypi 和 python 读取两个红外传感器

我正在用树莓派和两个红外传感器在 python 中开发一个项目。

红外发射器位于 Arduino 上,每 50 毫秒连续发送一个代码,此速率无法更改。

我需要 raspberrypi python 脚本每 500 毫秒检查两个红外传感器(左和右)。如果左侧传感器在此 500ms 时间间隔内接收到代码,则显示接收到的代码,否则,显示左侧传感器未接收到代码。使用正确的传感器重复该过程。

我为此创建了一个简单的 python 脚本。但是,我总是需要清除缓冲区,以便已读取的旧值不会干扰检查。我正在用“while”一个一个地读取缓冲区值来做到这一点。

EVDEV 是否具有清除缓冲区的刷新功能,还是有更好的方法来执行此操作?

0 投票
0 回答
139 浏览

python - Python 二维码阅读器。专听键盘输入()

我希望我的 python 脚本只收听被检测为键盘的 QR 码阅读器。我不希望键盘写入控制台或某处。在 Linux 上,只有 python 脚本应该听那个键盘。那可能吗?是否有库或 udev 规则可以防止此类事情发生?

我也试过 python-evdev。我只能绑定到带有dev.grab_context():. 它可以工作并接收单键事件,但我没有映射。所以input()对我来说是最简单的方法。

0 投票
0 回答
193 浏览

python - 使用 Python evdev 模拟控制器 dpad 按钮

我正在尝试使用 Python evdev 模拟按住控制器上的 DPad 按钮。

到目前为止,我已经成功地按下了这样的按钮:

但未能成功让应用程序模拟输入以检测按住任意时间的按钮。我试过的是这个(还有一些变化)

我究竟做错了什么?

0 投票
1 回答
1273 浏览

linux - /dev/input/eventX 和 /dev/input/jsX 有什么区别?

当我在我的 Linux 内核 v5.14 上连接游戏手柄时,会出现两个新设备:

如果我cat <file> | xxd两个设备文件都提供游戏手柄事件信息。但是event23js1.

此外,evtest给出错误但Invalid Argument在. 当我同时使用 libevdev 两个设备文件时也会发生同样的情况。js1event23

看起来每个事件都会js1转储input_event结构的内容(在 中定义linux/input.h

设备文件有什么区别?为什么他们有不同的信息,以及event23提供的更多信息是什么js1

0 投票
0 回答
177 浏览

python - BLE 设备在重新连接时不会生成新的 /dev/input/eventX,使用 Python Gatt 库

我是 pythongatt模块的新手,我遇到了重新连接的问题。基本上我要做的是使用pythongatt模块(https://github.com/getsenic/gatt-python)建立与蓝牙低功耗(BLE)设备的连接,然后使用模块从/dev/input/eventX路径中读取输入evdev. 我还想自动化重新连接过程,因此当设备超出范围并返回时,它将重新连接并继续正常工作。

问题是,当设备断开连接并最终重新连接时(通过像这样的简单例程:catch disconnect message -> try to reconnect),如果重新连接时间超过 2-3 分钟,则连接过程不会创建新/dev/input/eventX路径。如果在前 1-2 分钟之间重新连接成功,则不会发生这种情况。

2-3分钟过去后我得到的错误是:

文件“/usr/lib/python3.7/site-packages/dbus/proxies.py”,第 145 行, 调用 文件“/usr/lib/python3.7/site-packages/dbus/connection.py”,行651,在 call_blocking dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: 没有收到回复。可能的原因包括:远程应用程序未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。

该脚本的核心如下: