当前位置: 代码迷 >> 驱动开发 >> 基于input子系统显示鼠标坐标有关问题
  详细解决方案

基于input子系统显示鼠标坐标有关问题

热度:83   发布时间:2016-04-28 10:44:49.0
基于input子系统显示鼠标坐标问题
我代码的目的是显示鼠标坐标大家帮我看看哪有问题。
目前的效果是能够在.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相关的驱动组件,你就会理解了.
  相关解决方案