问题标签 [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.
linux - evdev:查找游戏手柄轴的“剩余”值
如何找到游戏控制器任意轴的静止值是多少?例如,在我的 Dualshock 4 上,以下是来自的相关数据evtest
:
在上面的例子中,我在跑步时一直扣动正确的扳机evtest
;因此,value
forABS_Z
变为 255 而不是 0。那么,既然我们不能value
用于此目的,那么他们有什么方法可以找出静止值是多少?
编辑:我正在使用libevdev
API 来访问游戏手柄。上面打印的信息可以从input_absinfo
结构中访问。
python - 使用 python uvdev 设置绝对光标位置
我正在尝试在 python 中模拟图形输入板,因此,我需要能够设置光标的绝对位置。我试过python-evdev和python-libevdev,但我无法设置绝对位置。将值写入 EV_ABS ABS_X 和 ABS_Y 根本不会对光标位置产生任何影响。值得一提的是,模拟按钮和相对定位可以完美运行。
我在 x11 上使用 Manjaro 4.19 和 Gnome。
我将不胜感激,并在此先感谢您。
这是必须能够设置绝对光标位置的简单代码,但事实并非如此。
python - evdev - 终止读取循环
我正在 Raspberry Pi 上开发一个小型应用程序。对于这个问题,我可以归结为旋转编码器的使用。我发现使用 dtoverlay 对我来说是最方便的方式。因此,我在 python3 中使用了 evdev 模块。我当前的代码如下所示:
现在我的问题是,我怎样才能以最好的方式终止这个程序。我无法停止线程,因为 for 循环等待设备上的事件。我想以某种方式模拟一个事件,但我不确定(=我不知道)如何做到这一点。我在网上没有找到任何参考资料,我想知道为什么..
我感谢您的帮助!
python-3.x - 使用 evdev InputDevice 退出 python 程序会导致错误
我正在尝试使用 evdev 将控制器作为输入设备。当我退出程序时,我收到一条错误消息,指出删除方法(超级)至少需要一个参数。我看过,但无法找到正确处理此问题的解决方案。
该程序:
当我使用特定键时,我会中断循环,从而导致以下错误消息:
当我退出使用时也会发生同样的情况^C
。任何想法如何正确处理出口?
python - 关于python evdev rfid卡扫描仪数据的问题
谁能帮我弄清楚如何使用evdev
python模块?我有一个 USB 卡扫描仪,我想用它来扫描卡并让树莓派通过 Kodi 媒体播放器播放一些音乐文件。我可以扫描卡并从中获取信息,但由于此读卡器被识别为键盘,它也会向 kodi 发送按键。有没有办法强制 python 只读取卡上编码的卡号,而不是在最后发送额外的 enter 按键?
例如,当我在打开的文本文件编辑器中扫描卡片时,kate
它看起来如下所示:
新行实际上是一个 enter 按键,它在 kodi 中执行各种不良行为(取决于您所在的屏幕,它会按随机按钮),它也会弄乱我的 python 代码行为。
所以问题是:我可以告诉使用evdev
模块的读者只阅读数字而不是 EOL 字符吗?
不确定我是否说得通,所以如果您有任何问题,请询问他们。
python - 用 raspberrypi 和 python 读取两个红外传感器
我正在用树莓派和两个红外传感器在 python 中开发一个项目。
红外发射器位于 Arduino 上,每 50 毫秒连续发送一个代码,此速率无法更改。
我需要 raspberrypi python 脚本每 500 毫秒检查两个红外传感器(左和右)。如果左侧传感器在此 500ms 时间间隔内接收到代码,则显示接收到的代码,否则,显示左侧传感器未接收到代码。使用正确的传感器重复该过程。
我为此创建了一个简单的 python 脚本。但是,我总是需要清除缓冲区,以便已读取的旧值不会干扰检查。我正在用“while”一个一个地读取缓冲区值来做到这一点。
EVDEV 是否具有清除缓冲区的刷新功能,还是有更好的方法来执行此操作?
python - Python 二维码阅读器。专听键盘输入()
我希望我的 python 脚本只收听被检测为键盘的 QR 码阅读器。我不希望键盘写入控制台或某处。在 Linux 上,只有 python 脚本应该听那个键盘。那可能吗?是否有库或 udev 规则可以防止此类事情发生?
我也试过 python-evdev。我只能绑定到带有dev.grab_context():
. 它可以工作并接收单键事件,但我没有映射。所以input()
对我来说是最简单的方法。
python - 使用 Python evdev 模拟控制器 dpad 按钮
我正在尝试使用 Python evdev 模拟按住控制器上的 DPad 按钮。
到目前为止,我已经成功地按下了这样的按钮:
但未能成功让应用程序模拟输入以检测按住任意时间的按钮。我试过的是这个(还有一些变化)
我究竟做错了什么?
linux - /dev/input/eventX 和 /dev/input/jsX 有什么区别?
当我在我的 Linux 内核 v5.14 上连接游戏手柄时,会出现两个新设备:
如果我cat <file> | xxd
两个设备文件都提供游戏手柄事件信息。但是event23
比js1
.
此外,evtest
给出错误但Invalid Argument
在. 当我同时使用 libevdev 两个设备文件时也会发生同样的情况。js1
event23
看起来每个事件都会js1
转储input_event
结构的内容(在 中定义linux/input.h
)
设备文件有什么区别?为什么他们有不同的信息,以及event23
提供的更多信息是什么js1
?
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: 没有收到回复。可能的原因包括:远程应用程序未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。
该脚本的核心如下: