【发布时间】:2013-05-05 03:18:54
【问题描述】:
我正在尝试根据 Essential Linux device Drivers 一书实现一个虚拟鼠标驱动程序。有一个用户空间应用程序,它生成坐标以及内核模块。
请参阅:Virtual mouse driver and userspace application code 和 step by step,了解如何使用此驱动程序。
1.) 我编译用户空间应用程序和驱动程序的代码。
2.) 接下来我检查了dmesg 的输出并拥有,
输入:未指定的设备为 /class/input/input32
虚拟鼠标驱动程序已初始化
3.) sysfs 节点在初始化期间被正确创建(在/sys/devices/platform/vms/coordinates 中找到)
4.) 我知道虚拟鼠标驱动程序 (input32 ) 通过检查以下内容链接到 event5:
$ cat /proc/bus/input/devices
我:总线=0000 供应商=0000 产品=0000 版本=0000
N:名称=""
P:物理=
S: Sysfs=/devices/virtual/input/input32
U: 唯一=
H:处理程序=event5
B: EV=5
B:REL=3
5.) 接下来我将 GPM 服务器附加到事件接口:gpm -m /dev/input/event5 -t evdev
6.) 运行用户空间应用程序为虚拟鼠标生成随机坐标,并使用od -x /dev/input/event5观察生成的坐标。
然后什么也没有发生。为什么?
here 作者还提到应该停止 gdm,使用 /etc/init.d/gdm stop,但是在停止 @ 时我得到 "no such service" 987654330@.
这是我构建和运行虚拟鼠标的完整脚本:
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](二)config/udev:添加输入设备(/dev/input/event5)
[272.987] (II) 未指定输入驱动程序/标识符(忽略)
[666.521](二)config/udev:添加输入设备(/dev/input/event5)
[666.521] (II) 未指定输入驱动程序/标识符(忽略)
【问题讨论】:
-
我使用的是 ubuntu 发行版而不是自定义内核,这个例子可以吗?
-
那么现在的问题是:X11 出了什么问题? 那么这个问题不适用于Stackoverflow。
-
可能是虚拟机的原因? (我使用 virtualbox)
标签: linux linux-kernel mouse mouseevent linux-device-driver