我正在尝试根据Essential Linux device Drivers book实现虚拟鼠标驱动程序。有一个用户空间应用程序,它生成坐标以及内核模块。
请参阅:虚拟鼠标驱动程序和用户空间应用程序代码以及如何使用此驱动程序的分步说明。
1.) 我编译用户空间应用程序和驱动程序的代码。
2.)接下来我检查了dmesg
输出并有,
输入:未指定设备为 /class/input/input32 已
初始化虚拟鼠标驱动程序
3.)在初始化期间正确创建了sysfs节点(在 中找到/sys/devices/platform/vms/coordinates
)
4.)我知道虚拟鼠标驱动程序(input32 )通过检查以下内容链接到event5 :
$ cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name=""
P: Phys=
S: Sysfs=/devices/virtual/input/input32
U: Uniq=
H:处理程序=event5
B:EV=5
B:REL=3
5.) 接下来我将GPM服务器附加到事件接口:gpm -m /dev/input/event5 -t evdev
6.) 运行用户空间应用程序为虚拟鼠标生成随机坐标并使用 .观察生成的坐标od -x /dev/input/event5
。
什么也没有发生。为什么?这里作者还提到gdm
应该停止,使用/etc/init.d/gdm stop ,但是停止时我得到“没有这样的服务”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
正如我之前所说,我可以通过 od 收到结果,但我是通过您的程序 echo 9 19 > /sys/devices/platform/virmouse/vmevent 收到的
给出:
时间 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)配置/udev:添加输入设备(/dev/input/event5)
[272.987](II)未指定输入驱动程序/标识符(忽略)
[666.521](II)配置/udev:添加输入设备(/dev/input/event5)
[666.521](II)未指定输入驱动程序/标识符(忽略)