android+linux+input子系统介绍

android+linux+input子系统介绍

ID:28857346

大小:176.50 KB

页数:8页

时间:2018-12-14

android+linux+input子系统介绍_第1页
android+linux+input子系统介绍_第2页
android+linux+input子系统介绍_第3页
android+linux+input子系统介绍_第4页
android+linux+input子系统介绍_第5页
资源描述:

《android+linux+input子系统介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准文案Androidlinux内核input子系统解析Android、Xwindows、qt等众多应用对于linux系统中键盘、鼠标、触摸屏等输入设备的支持都通过、或越来越倾向于标准的input输入子系统。因为input子系统已经完成了字符驱动的文件操作接口,所以编写驱动的核心工作是完成input系统留出的接口,工作量不大。但如果你想更灵活的应用它,就需要好好的分析下input子系统了。一、input输入子系统框架下图是input输入子系统框架,输入子系统由输入子系统核心层(InputCore),驱动层和事件处理层(Ev

2、entHandler)三部份组成。一个输入事件,如鼠标移动,键盘按键按下,joysTIck的移动等等通过inputdriver->Inputcore->Eventhandler->userspace到达用户空间传给应用程序。注意:keyboard.c不会在/dev/input下产生节点,而是作为ttyn终端(不包括串口终端)的输入。二、Inputdriver编写要点1、分配、注册、注销input设备精彩文档实用标准文案structinput_dev*input_allocate_device(void)        inti

3、nput_register_device(structinput_dev*dev)        voidinput_unregister_device(structinput_dev*dev)2、设置input设备支持的事件类型、事件码、事件值的范围、input_id等信息参见usb键盘驱动:usbkbd.cusb_to_input_id(dev,&input_dev->id);//设置bustype、vendo、product等        input_dev->evbit[0]=BIT(EV_KEY)

4、BIT(EV_L

5、ED)

6、BIT(EV_REP);//支持的事件类型        input_dev->ledbit[0]=BIT(LED_NUML)

7、BIT(LED_CAPSL)

8、BIT(LED_SCROLLL)

9、BIT(LED_COMPOSE)

10、BIT(LED_KANA);//EV_LED事件支持的事件码        for(i=0;i<255;i++)                set_bit(usb_kbd_keycode[i],input_dev->keybit);//EV_KEY事件支持的事件码include/linux/i

11、nput.h中定义了支持的类型(下面列出的是2.6.22内核的情况)#defineEV_SYN           0x00        #defineEV_KEY           0x01        #defineEV_REL           0x02        #defineEV_ABS           0x03        #defineEV_MSC          0x04        #defineEV_SW            0x05        #defineEV_LED    

12、      0x11        #defineEV_SND         0x12        #defineEV_REP         0x14        #defineEV_FF            0x15        #define精彩文档实用标准文案EV_PWR        0x16        #defineEV_FF_STATUS        0x17        #defineEV_MAX          0x1f一个设备可以支持一个或多个事件类型。每个事件类型下面还需要设置具体的触

13、发事件码。比如:EV_KEY事件,需要定义其支持哪些按键事件码。3、如果需要,设置input设备的打开、关闭、写入数据时的处理方法参见usb键盘驱动:usbkbd.cinput_dev->open=usb_kbd_open;        input_dev->close=usb_kbd_close;        input_dev->event=usb_kbd_event;4、在发生输入事件时,向子系统报告事件用于报告EV_KEY、EV_REL、EV_ABS等事件的函数有:voidinput_report_key(stru

14、ctinput_dev*dev,unsignedintcode,intvalue)        voidinput_report_rel(structinput_dev*dev,unsignedintcode,intvalue)        voidinput_repor

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。