我代码的目的是显示鼠标坐标大家帮我看看哪有问题。
目前的效果是能够在.dev/input/下产生一个eventX文件但该文件不为空。为什么?
#include<linux/input.h>
#include<linux/module.h>
#include<linux/init.h>
#include<linux/interrupt.h>
#include<asm/irq.h>
#include<asm/io.h>
static struct input_dev *mouse_dev;
static int __init mouse_init(void)
{
int error;
mouse_dev = input_allocate_device(); /*分配一个设备结构体*/
if (!mouse_dev) /*判断分配是否成功*/
{
printk(KERN_ERR "mouse.c: Not enough memory\n");
error = -ENOMEM;
goto err_free_dev;
}
set_bit(EV_REL, mouse_dev->evbit);
set_bit(REL_X, mouse_dev->relbit);
set_bit(REL_Y, mouse_dev->relbit);
error = input_register_device(mouse_dev); /*注册一个输入设备*/
if (error)
{
printk(KERN_ERR "mouse.c: Failed to register device\n");
goto err_free_dev;
}
input_report_rel(mouse_dev, REL_X, 0);
input_report_rel(mouse_dev, REL_Y, 1);
input_sync(mouse_dev);
return 0;
err_free_dev: /*以下是错误处理*/
input_free_device(mouse_dev);
return error;
}
static void __exit mouse_exit(void) /*卸载函数*/
{
input_unregister_device(mouse_dev);
input_free_device(mouse_dev); /*注销按键设备*/
}
module_init(mouse_init);
module_exit(mouse_exit);
MODULE_LICENSE("GPL");
------解决方案--------------------
你的鼠标是什么接口的?
仔细学习系统的HID Input相关的驱动组件,你就会理解了.