问题标签 [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.
qt - QML 应用程序重新连接到触摸屏
我在树莓派 3 上运行我的 qml 应用程序。对于输入,我使用的是触摸屏。
通常触摸屏工作正常。但是当我重新启动触摸屏时,qml 应用程序给了我以下错误消息:
evdevtouch:无法从输入设备读取(没有这样的设备)
在此消息之后,qml 应用程序不再从触摸屏接收任何事件。
我知道触摸屏在系统中注册为 /dev/input/eventX。关闭触摸屏时,我可以看到 /dev/input/eventX 消失了。再次打开触摸屏后,我又可以看到 /dev/input/eventX 了。
和
QT_LOGGING_RULES
我看到 qml 应用程序正在发现这个设备并在应用程序启动后连接到它。
但是一旦设备消失,应用程序似乎不会再次重新连接。
有什么想法可以重新连接到设备吗?或者也许还有其他想法?
亲切的问候
python - 如何(可靠地)在嵌入式(无头)Linux 中读取 USB 条码扫描器?
我需要将通用 USB 扫描仪(不是单个定义的模型)与嵌入式 Linux 设备(运行 Linux 3.18 的 mips32/MT7620,如果重要的话)连接起来。
所有扫描仪都在“键盘仿真模式”下运行,而且,果然,如果插入桌面 Linux,则将其数据直接作为键盘输入发送到控制台。
这不会在设备上发生(即:我在串行调试控制台上看不到任何字符,这是有道理的,因为它错过了所有 X 输入子系统)。
所有扫描仪都将自己显示为 上的输入设备/dev/input/event0
。
我目前的尝试是使用 python evdev
;代码非常简单:
注意:这只是一个提取的片段;如果需要,我可以发布一个可运行的示例。
这本质上就是这个答案(我正在使用asyncio
,这会是一个问题吗?)它似乎有效,但实际上会丢失事件。
如果条形码扫描仪背靠背发送事件,我似乎很早就开始丢失事件(在大约 16 个事件 <= 8 个字符之后!)。
如果我可以插入字符间延迟(~1ms 就足够了),那么一切都会按预期工作,但这不是许多扫描仪的选项。
我错过了什么?
c - 使用 libevdev 跟踪多个着陆/上升
我正在使用 libevdev 并且无法理解如何检测多个触地/触地。如本 libevdev教程所示,您可以看到在页面的最后一个示例中,发生了两次触摸。但是,只BTN_TOUCH
接收到两个事件,一个是第一根手指向下,然后是最后一根手指抬起。第二次/中间接触没有BTN_TOUCH
发生。那么我怎么知道第二次触摸何时上升和下降(即从双指手势转换为单指手势)?
这是我的两个手指向下并备份的日志:
当一根手指向上又向下,而另一根手指仍留在屏幕上时,我得到的只是重复部分内容:
python - While True Loop 中的 USB 事件捕获
我希望在“while True”循环中捕获单个 USB 键盘事件,该循环还包括一个计时器功能。Evdev 接近我所需要的,但它的 device.read_loop 不允许包含时钟功能 - 它是一个闭环。关于如何捕获一个我可以在检查时控制的 USB 键盘事件的任何想法?我使用的是 Python 3.4,所以 asyncio 不是一个选项。谢谢你。
c - evdev 如何判断是否移动 x11 光标?
我开始深入研究 linux 上的 evdev api,目的是玩弄 uinput 仿真。我注意到在操纵杆和触摸板之间,有不同的按钮/键事件代码来区分操纵杆按钮按下和鼠标单击。但是两个设备都有 ABS_X 和 ABS_Y 轴的事件代码。
那么 x11 是如何知道将 '/dev/input/eventX' 节点视为操纵杆还是鼠标来移动屏幕上的光标呢?是否有一些 ioctl 可以用来设置设备是否由 x11 加载?驾驶员还需要做些什么来表明这一点?
我查看了一些错误报告,发现在旧版本中存在一些情况,即手柄在连接时确实会移动鼠标,但我找不到任何补丁可以表明它们发生了什么变化以表明与 x11 的区别。
在有人说之前,我知道在实践中使用 libevdev 比直接调用 uinput 更可取,但这仅用于教育目的。即使在那里,我也有同样的问题。
python - 使用操纵杆输入做事(驱动伺服系统,打开 LED)
我正在构建一个基本的 DVa Mech 机器人(爱好)。这是非双足的。轮式底盘。python中的所有代码。
如何在按住按钮、推动操纵杆的同时连续执行活动?我什至可以同时做两个(或更多):向前移动车轮、转动躯干、开枪?
我正在阅读操纵杆输入。伺服也可以工作。我似乎无法弄清楚“按下按钮时 - 做某事 - 并继续扫描以获取更多输入”的逻辑循环
尝试了各种事情......他们没有工作,所以他们不在下面的代码中。
运行 6 个连续伺服系统(4 个用于底盘,两个用于迷你枪)罗技 F710 操纵杆
相当基本......当按下 BTN_TL 时,舵机 5 和 6 应该旋转直到按钮被释放
同样,HAT0X 和 0Y 按下时,舵机应该向前/向后/向左/向右移动。
我已经尝试过while循环等等......但是在操纵杆输入中有一个逻辑/时序序列我没有放在正确的位置
python - 在 device.leds() 关闭 led 之后的 grab()
我可以使用 evdev 读取 NUML_LED 状态。但是,如果我在退出程序时读取 LED 后抓取()设备,即使就系统而言状态仍处于开启状态,LED 也会关闭。
如果我只做一个grab()
ORdevice.leds()
而没有另一个,它们(如预期的那样)不会关闭。但是调用两个 LED 都会弄乱。
编辑: 我刚刚意识到,如果 LED_NUML 和 LED_CAPSL 在我退出时打开,则 LED 关闭,但是当我按下 num_lock 或 caps_lock 时,另一个按钮的状态也会得到修复。
IE:
python - Windows中是否有等效的evdev
我想制作一个程序来解码条形码扫描仪给出的输入,是否有相当于 evedev for windows 所以我可以读取这个设备给出的输入
python-3.x - 有人可以向我解释这个键变量吗
我正在使用 USB RFID 和树莓开发门锁。我搜索了几乎所有我用熟悉的代码找到的python脚本都有以下变量键。所以有人可以向我解释他们为什么使用它或为什么我也必须使用它。先感谢您。 python代码图像
python - 使用具有特定键盘布局的 Evdev 将键码解析为扫描码
我正在使用以下代码为我当前插入的键盘打印键码和扫描码:
目前我有一个德语键盘布局,因为我想要美国以外的东西。当我按下“#”时,我得到以下输出:
KEY_BACKSLASH
43
显然,这是错误的。在美式键盘上,这是正确的。
所以我的问题是:如何在不调用 shell 的情况下为按下的键获取正确的键码/扫描码?