底层按键程序-Android版.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、Android 中按键为什么需要进行转换? 与用户交互的输入设备(触摸屏,键盘等)是获取用户意图的来 与用户交互的输入设备(触摸屏,键盘等)是获取用户意图的来 确处理用户的操作,我们就必须将从输入设备上获取到的键值正确转换为Android 系统定义的键值以便正确处理。源。由于硬件本身的物理特性及由各大硬件厂商的标准不一,这将导致我们从设备上获取到的键值存在一定的差异性,为了让系统能够正 确处理用户的操作,我们就必须将从输入设备上获取到的键值正确转 换为Android 系统定义的键值以便正确处理。 二、Android 中按键输入转换过程 扫描键码Scancode 是由Linux 扫描键码Scancode 是由Linux 的input 驱动定义的整形类型, 扫描键码根据读取的 kl 配置文档内容的转化后,形成按键的标签 KeycodeLaybel。按键的标签在经过数组 KeycodeLaybel。按键的标签在经过数组 KEYCODES 的转换后形成 keycode。应用程序对keycode 进行处理。 Android 默认提供的按键布局文件主要包括qwerty.kl和AVRCP.kl(/system/usr/keylayout/ Android 默认提供的按键布局文件主要包括 qwerty.kl 和 AVRCP.kl(/system/usr/keylayout/目录下)。Qwerty.kl 为全键盘的 布局文件,是系统中默认使用的布局文件, AVRCP.kl 用于多媒体控 制。 三、Linux 中按键定义的数据结构 3.1Linux 中input_event 3.1Linux 中input_event 结构体 (定义按键在 (定义按键在 linux/input.h 中) struct struct input_event { struct struct timeval time; //按键时间 u16 type; //类型,在下面有定义 u16 code; //要模拟成什么按键 s32 value;//是按下还是释放 }; }; 1、Code 事件的代码.如果事件的类型代码是EV_KEY,该代码code 为设备键盘代码.代码值 0~127 为键盘上的按键代码,0x110~0x116为鼠标上按键代码,其中 0x110(BTN_LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键, 事件的代码.如果事件的类型代码是EV_KEY,该代码code 为设备 键盘代码. 代码值 0~127 为键盘上的按键代码,0x110~0x116 为鼠标上按 键代码, 其中 0x110(BTN_ LEFT)为鼠标左键, 0x111(BTN_RIGHT)为鼠标右键, 0x112(BTN_ MIDDLE)为鼠标中键. 如果事件的类型代码是 EV_REL,code 值表示轨迹的类型.如指示 鼠标的X 轴方向REL_X(代码为 0x00),指示鼠标的Y 轴方向REL_Y(代 码 为 0x01),指示鼠标中轮子方向REL_WHEEL(代码为 0x08). 其它代码含义请参看include/linux/input.h 文件. 其它代码含义请参看include/linux/input.h 文件. 2、Type /*Eventtypes /*Event types 参考值*/ #define EV_SYN 0x00 #define EV_KEY 0x01 //按键 常用的用红色标记出 来 来 #define EV_REL 0x02 //相对坐标(轨迹球) #define EV_ABS 0x03 //绝对坐标(鼠标) #define #define EV_MSC 0x04 //其他 #defineEV_SND0x12//声音#defineEV_REP0x14//repeat#define #define EV_SND 0x12//声音 #define EV_REP 0x14//repeat #define EV_FF 0x15 #define EV_PWR 0x16 #define EV_FF_STATUS 0x17 #define EV_MAX 0x1f #define #define EV_CNT (EV_MAX+1) 3、Value 事件的值.如果事件的类型代码是 事件的值.如果事件的类型代码是EV_KEY,当按键按下时值为 1, 松开时值为 0; 如果事件的类型代码是 EV_REL,value 的正数值和负数值分别 如果事件的类型代码是 EV_ REL,value 的正数值和负数值分别 代表两个不同方向的值. 3.2 Android RawEvent 结构体 Android 中将从底层获取到的按键按照一定规则处理后,用如

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档