问题标签 [uinput]

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 投票
0 回答
154 浏览

python - Python 脚本停止在新启动的应用程序上运行 (python-evdev)

几个星期以来,我一直在摸不着头脑,我对 Linux 的了解并不多,所以很容易被我忽略。

在我的系统中,我有一个通过 I2C 将数据发送到我的 RaspberryPi 的 arduino。PI 查看数据,然后应模拟系统中的按钮按下。我正在使用 python 脚本和 evdev 来完成这个。系统首先以吸引模式(游戏模拟器前端)启动,然后从那里启动所需的模拟器 + 游戏。

我首先在 rc.local 中启动 python 脚本 sudo python myscript.py & 并使其运行。它可以毫无问题地读取 I2C,但 evdev 没有按预期工作。

树莓派没有插入键盘。在我的第一次测试中,我插入了一个用于测试目的的键盘,一切正常,python-evdev 发送的按钮按下,在吸引模式和启动的模拟器中都可以识别。伟大的!我想...

这是工作代码:`

`

然后我关闭系统并拔下键盘并再次启动系统,现在我的问题开始了;如果没有插入吸引模式和启动模拟器的键盘,将不再识别任何按钮按下。所以我试着做这里描述的事情:http: //python-evdev.readthedocs.io/en/latest/tutorial.html#specifying-uinput-device-options

并得到了一些不同的结果。

现在我的按钮在吸引模式下工作得很好,但一旦我启动模拟器就停止工作。但是,如果我在模拟器启动后重新运行我的脚本,那么按钮也可以在那里工作。

这是我对代码的更改:

如果我忽略了某些东西或遗漏了某些东西,我真的不知道如何解决这个问题。

我已经尝试过:http: //python-evdev.readthedocs.io/en/latest/tutorial.html#create-uinput-device-with-capabilities-of-another-device 并尝试将我的脚本作为服务启动初始化.d。我监视键盘按下,所以我看到我的脚本在模拟器启动时正在运行。

编辑:

如果我cat /proc/bus/input/devices在使用脚本的第二个版本时运行(除非我再次运行脚本,否则该脚本在吸引模式下工作但不在启动的模拟器中),这就是我得到的:

我可以看到cat /dev/input/event1它正在接收我的输入。

如果我运行第一个只有在我有外接键盘时才有效的版本,这就是我得到的:

如果我在没有外部键盘的情况下运行相同的版本:

0 投票
1 回答
346 浏览

linux - Uinput游戏手柄事件不起作用

你好吗?我希望你能帮助我,我有一个来自 Artix Linux 的问题,我想连接我的 Wii Remote 以将其用作游戏手柄,它不想工作,因为 uinput 模块不想解释与游戏手柄输入,它不会捕捉例如“BTN_A”或其他,但如果我把另一个作为“KEY_A”,如果它识别它但在这种情况下充当键盘输入。你提出什么解决方案?

请注意,我使用的是 WMinput,并且我已经安装了 cwiid、wminput,甚至还修复了内核中的 uinput 模块。

0 投票
1 回答
154 浏览

linux - 32 位 arm android ndk 独立工具链中缺少 linux/uinput.h?

我的程序使用 linux/uinput.h 标头。此头文件包含在 arm64 android ndk 独立工具链中(使用此命令在 android ndk 文件夹中生成:)python.exe ./make_standalone_toolchain.py --arch arm64 --install-dir arm64 --deprecated-headers --stl gnustl,但不包含在 32 位 arm one 中,生成方式相同。这是一个问题,因为我需要使用标题。我试图复制标头(一些研究表明体系结构与 uinput 标头无关),但随后出现此错误:

这是怎么回事?为什么头文件不包含在 32 位工具链中,为什么完全相同的头文件在复制时会出错?

0 投票
1 回答
9289 浏览

python - OSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备

我对覆盆子和 Linux 很陌生。我正在尝试使用以下代码在 Raspbian(r Pi 3 B)上运行 python 库uinput的基本示例:

我得到错误:

回溯(最近一次通话最后):

文件“/home/pi/Desktop/t1.py”,第 7 行,在 uinput.REL_Y 中,文件“/home/pi/.local/lib/python3.5/site-packages/uinput/init .py ”,行178,在初始化 自我。uinput_fd = fd 或 fdopen() 文件“/home/pi/.local/lib/python3.5/site-packages/uinput/__init .py”,第 84 行,在 fdopen 返回 _libsuinput.suinput_open() 文件“/home/ pi/.local/lib/python3.5/site-packages/uinput/ init .py",第 70 行,在 _open_error_handler 中引发 OSError(code, msg)

OSError: [Errno 19] Failed to open the uinput device: No such device 怎么回事?我需要更改什么以及在哪里更改?

0 投票
1 回答
572 浏览

python - 无法使用 python-uinput 将触摸事件写入 uinput

我正在尝试编写触摸事件。我正在使用相机来跟踪手,所以我需要两个指针并且我需要显示它们。

这是我尝试过的,但它什么也没做:

但是,使用鼠标可以:

但我需要绝对而不是相对定位。

我可以从终端查看事件以进行调试吗?

我希望能够有 2 个指针、绝对定位、触摸/单击、悬停(BTN_TOOL_PEN),我的意图是允许拖动/滚动。关于我应该使用哪些事件的任何指导以及一个简单的工作示例都会很棒!

我无法让 evdev 工作,但也欢迎回答。

0 投票
0 回答
593 浏览

python - evdev 无法模拟触摸输入

我正在尝试使用 evdev 来模拟触摸输入。

将自己添加到input组中,错误是:

运行后chmod +0666 /dev/uinput错误变为:

删除(e.ABS_MT_POSITION_X, (0, 255, 128, 0))

0 投票
0 回答
64 浏览

cygwin - cygwin /dev/input/eventX 功能

有谁知道 cygwin 是否具有类似于 Linux 上的 /dev/input/eventX 的功能?我可以在网上找到的唯一参考是:http ://polarhome.com/service/man/?qf=input-linux-evdev&tf=2&of=Cygwin&sf=7 。但是我一辈子都想不出如何安装这个包(或者如果它甚至是我需要的)。任何帮助将不胜感激!

0 投票
0 回答
763 浏览

python-3.x - 使用 `uinput` 模块创建设备文件失败。Ubuntu for Windows 上的 Python3

我有一个在 python3.4 上运行的 python 脚本并使用该包keyboard来允许键绑定;

当我在 Windows 上运行它时,它可以完美地监听两个热键,在 linux (CentOS) 上运行时它也可以正常工作。

在工作中,我通过 Windows 10 功能和应用商店在我的 Windows 上获得了 Ubuntu 环境。然而,这个环境有这个键盘热键的问题。

如果有人知道如何解决这个问题或有一个很好的解决方法。请告诉我。

0 投票
1 回答
371 浏览

c - evdev 如何判断是否移动 x11 光标?

我开始深入研究 linux 上的 evdev api,目的是玩弄 uinput 仿真。我注意到在操纵杆和触摸板之间,有不同的按钮/键事件代码来区分操纵杆按钮按下和鼠标单击。但是两个设备都有 ABS_X 和 ABS_Y 轴的事件代码。

那么 x11 是如何知道将 '/dev/input/eventX' 节点视为操纵杆还是鼠标来移动屏幕上的光标呢?是否有一些 ioctl 可以用来设置设备是否由 x11 加载?驾驶员还需要做些什么来表明这一点?

我查看了一些错误报告,发现在旧版本中存在一些情况,即手柄在连接时确实会移动鼠标,但我找不到任何补丁可以表明它们发生了什么变化以表明与 x11 的区别。

在有人说之前,我知道在实践中使用 libevdev 比直接调用 uinput 更可取,但这仅用于教育目的。即使在那里,我也有同样的问题。

0 投票
1 回答
177 浏览

c++ - uinput 在wayland/weston 下模拟 LWIN + S

我正在尝试在 Wayland 下模拟 Left Windows Key (Super) + S 的组合键以自动执行屏幕截图(此组合键正确启动了将屏幕截图保存到主目录的 weston-screenshooter,但无法从终端执行)。我发现了使用 uinput 来做这件事,我找到了一些例子并想出了这个:

我最大的问题是我不知道哪个 KEY_ 是左 Win/Left Super 键,键定义根本没有向我显示与 win 或 super 或 mod_s 相关的任何内容,在 x11 上使用 xev 我发现 LWIN 应该是133,但我认为这是不正确的,因为代码中的 KEY_S = 31 但在 xev 中是 39。

运行应用程序时,我可以看到设备正在系统中注册:

但没有其他事情发生。

左 Windows 键的正确键定义是什么?上面的代码对于发送组合键(一次按下 2 个键)是否有效?甚至有可能实现我想要的吗?我在系统中有完全的 root 访问权限。