900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 从零开始学USB(二十六 usb鼠标驱动驱动实例分析[1]简介)

从零开始学USB(二十六 usb鼠标驱动驱动实例分析[1]简介)

时间:2021-06-05 22:44:35

相关推荐

从零开始学USB(二十六 usb鼠标驱动驱动实例分析[1]简介)

这个驱动是在上一节的最简单的usb驱动基础上增加了输入子系统和usb包的获取和请求。

首先先给出一个稍微简化了一下的usb的鼠标驱动,这里只做了鼠标的三个按键。为了方便验证,这里用鼠标的左键,右键和中间分别作为标准按键的l s enter 键。

#include <linux/kernel.h>#include <linux/slab.h>#include <linux/module.h>#include <linux/init.h>#include <linux/usb/input.h>#include <linux/hid.h>struct usb_mouse_as_key {struct input_dev *dev;struct usb_device *usbdev; struct urb *key_urb;int maxp;signed char *data;dma_addr_t data_dma;};static void usb_key_func(struct urb *urb){struct usb_mouse_as_key *uk = urb->context;static signed char key_val;int status;//保证鼠标左键的键值有变化再上报if( (key_val & 0x01) != (uk->data[1] & 0x01) ) { input_report_key(uk->dev, KEY_L , uk->data[1] & 0x01 );input_sync(uk->dev);} if( (key_val & 0x02) != (uk->data[1] & 0x02

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。