我正在尝试实施一个虚拟鼠标驱动程序根据基本 Linux 设备驱动程序书。有一个用户空间应用程序,它生成坐标以及内核模块。
See: 虚拟鼠标驱动程序和用户空间应用程序代码 http://www.embeddedlinux.org.cn/EssentialLinuxDeviceDrivers/final/ch07lev1sec1.html还有一个一步步 http://www.matveev.se/linux/vms.htm关于如何使用该驱动程序。
1.)我编译了代码用户空间应用程序和驱动程序。
2.)接下来我检查了dmesg
输出并有,
输入:未指定的设备为 /class/input/input32
虚拟鼠标驱动程序已初始化
3.) The sysfs节点在初始化期间正确创建(在/sys/devices/platform/vms/coordinates
)
4.)我知道虚拟鼠标驱动程序(input32) 链接到event5通过检查以下内容:
$ 猫/proc/总线/输入/设备
I:总线=0000 供应商=0000 产品=0000 版本=0000
纽:名称=“”
P:物理=
S: Sysfs=/devices/virtual/input/input32
U:唯一=
H:处理程序=事件5
B:EV=5
B:相对=3
5.) 接下来我附上一个GPM服务器到事件接口:gpm -m /dev/input/event5 -t evdev
6.) 运行用户空间应用程序为虚拟鼠标生成随机坐标并使用观察生成的坐标od -x /dev/input/event5
.
但什么也没发生。为什么?
还here http://www.matveev.se/linux/vms.htm作者提到gdm
应停止使用/etc/init.d/gdm 停止,但我明白了“没有这样的服务”停止时gdm
.
这是我构建和运行虚拟鼠标的完整脚本:
make -C /usr/src/kernel/2.6.35.6-45.fc14.i686/ SUBDIRS=$PWD modules
gcc -o app_userspace app_userspace.c
insmod app.ko
gpm -m /dev/input-event5 -t evdev
./app_userspace
生成文件:
obj-m+=app.o
内核版本:2.6.35.6
正如我之前所说,我可以通过id收到结果,但我是通过你的程序收到的echo 9 19 > /sys/devices/platform/virmouse/vmevent
gives:
时间 1368284298.207654 类型 2 代码 0 值 9
时间 1368284298.207657 类型 2 代码 1 值 19
时间 1368284298.207662 类型 0 代码 0 值 0
那么现在的问题是:X11出了什么问题?我想强调的是,我在两个不同的发行版 Ubuntu 11.04 和 Fedora 14 下尝试了这段代码。
也许这会有所帮助:在 Xorg.0.log 中我看到以下内容:
[21.022](II)未指定输入驱动程序/标识符(忽略)
[272.987](II)config/udev:添加输入设备(/dev/input/event5)
[272.987](II)未指定输入驱动程序/标识符(忽略)
[666.521](II)config/udev:添加输入设备(/dev/input/event5)
[666.521](II)未指定输入驱动程序/标识符(忽略)