我正在尝试设置皮斯特罗莫这样我就可以重新映射我的Belkin N52TE 游戏手柄。
Pystromo 基本上会捕获按键,然后将重新映射的按键输出到 uinput 设备。但是,目前它只是吞下输入,什么也不输出。
我已将问题追溯到我的 uinput 设备出了问题,其确凿证据如下:
# ls -l /dev/input/uinput
crw-rw---- 1 root plugdev 10, 223 Dec 31 2009 /dev/input/uinput
# cat /dev/input/uinput
cat: /dev/input/uinput: No such device
uinput 模块已加载,可以通过 清楚看到lsmod
。有人见过这种情况吗,或者能想到值得尝试的方法吗?
当前设置
- Gentoo Linux
- 内核 2.6.32(Gentoo 源 2.6.32-r1)
- HP DV7 笔记本
输出
消息
dmesg | grep uinput
什么都不做,如果我运行,也不会出现新行modprobe -r uinput && modprobe uinput
。然而,运行 lsmod 时可以清楚地看到 uinput 模块:
# lsmod | grep uinput
uinput 6200 0
系统盘
# lsusb
Bus 005 Device 003: ID 050d:0200 Belkin Components
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 1532:0101 Razer USA, Ltd
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 5986:0143 Acer, Inc
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 03f0:171d Hewlett-Packard Wireless (Bluetooth + WLAN) Interface [Integrated Module]
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lsusb-v
更新
嗯,更新 evdev 和 hal 似乎已部分修复该问题。/dev/input/uinput 仍然无法访问,但 Pystromo 现已成功重新映射键。
我对这里发生的事情有点困惑,但似乎我对这一切如何运作的理解是有缺陷的。
由于我已经发布了悬赏,因此我将把这个留在这里,以便有人能够发布关于用户空间输入设备在后台如何工作的解释。
答案1
您不应该从 uinput 读取,因为 uinput 用于创建用户空间设备并向它们发送事件,所以该No such device
消息是正常的。
我认为这要么是一个简单的权限问题,要么是 uinput 设备本身位置的变化(即预期是 /dev/uinput,但它在 /dev/input/uinput 中),这两个问题在 Ubuntu 中都已经发生了变化,因此预期旧行为的程序可能会感到困惑。