s3c6410keypad驱动

s3c6410keypad驱动

ID:27899239

大小:649.50 KB

页数:27页

时间:2018-12-06

s3c6410keypad驱动_第1页
s3c6410keypad驱动_第2页
s3c6410keypad驱动_第3页
s3c6410keypad驱动_第4页
s3c6410keypad驱动_第5页
资源描述:

《s3c6410keypad驱动》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.S3C6410KeyPad驱动(上)********************************LoongEmbedded********************************作者:LoongEmbedded(kandi)时间:2011.12.19类别:WINCE驱动开发********************************LoongEmbedded********************************1.keyboard驱动概述1.1键盘驱动功能概述Keyboard驱动的主要的功能是从keyboard硬件

2、输入转换为keyboard事件并且发送给GWES,根据这些的keyboard事件产生合适的Unicode字符,keyboard驱动的架构图1所示图1keyboard驱动的架构如图1所示,Keyboard驱动分为layoutmanager(布局管理器)、currentinputlanguage和devicelayouts(设备布局),其中WINCE默认支持的键盘(设备)布局有PS/2(PersonalSystem2)和Matrix(矩阵式)键盘布局,PS/2键盘布局是针对PS/28042-compatiblekeyboardcontroller

3、设计的,Matrix键盘布局是针对矩阵式键盘来设计的,比如S3C6410内置了keypad接口用于外接矩阵式键盘。这样的设计思想便于开发任何的键盘布局,如果有不同于上面这两种布局,就需要自己添加了。键盘布局是指特定键盘的按键安排(key-..arrangement),例如包括按键数量和按键的配置(比如不同的键盘布局,同一个按键会对应不同的功能)。一些私有的键盘使用自己的布局,并且很多键盘允许用户根据个人的偏爱来建立按键到字符的映射。一些键盘驱动必须处理一些按键产生的多个按键(virtualkeys,可以理解为虚拟码),可以不需要像桌面工作机一

4、样把所有的物理按键都布置在键盘上,这对于小型硬件平台很有用。所以一些按键就有多种或、和可以修改的功能。键盘驱动根据特定物理按键和修饰按键(modifierkey,比如SHIFT和ALT)的状态来产生虚拟按键。通常,我们需要把键盘驱动作为一个分层驱动来实现,分为上层或是MDD层,这层映射扫描码成虚拟键码和产生于虚拟键码关联的字符数据,接着打包键盘消息并放入到系统范围(system-wide)的消息队列中,这样GWES就可以从消息队列中取出并且分发给相应的应用程序来处理和显示。另一层是低层或是PDD层,负责从键盘获取扫描码。因为键盘驱动依赖于语言

5、,扫描码映到虚拟键码和虚拟键码到unicode字符的映射都只依赖于语言的键盘布局,故不同于其他设备驱动。PFN_KEYBD_DRIVER_VKEY_TO_UNICODE指针类型函KeybdDriverVKeyToUnicode数根据虚拟键的状态来产生正确的unicode字符,此函数只依赖于指定语言的键盘布局(thekeyboardlayoutforthelanguage),这两种转换基于转换表。并且如果有必要,我们可以创建自己的键盘映射或者基于已经存在的键盘映射来定制。1.1键盘驱动的加载及初始化在系统启动的过程中GWES加载键盘驱动,当GW

6、ES开始后,它从注册表键HKEY_LOCAL_MACHINEHardwareDeviceMapKEYBDDrivername下的子键“Drivername”中取得键盘驱动的dll名字,我这里是smdk6410_keypad.dll,但如果在此入口下没有找到dll,GWES就采用默认的Keybddr.dll。接着就加载此dll并核实所有需要的入口函数是否存在,比如对于smdk6410_keypad.dll,会核实此dll对应的def文件中导出的接口函数是否存在,这些导出函数如图2所示图2smdk6410_keypad.dll的导出接口函

7、数-..GWES然后调用PFN_KEYBD_DRIVER_INITIALIZE函数指针类型的KeybdDriverInitializeEx函数初始化layout管理器和键盘驱动支持的PDD,并且传递键盘事件回调函数进来。在此函数中,键盘驱动在本地保存一份GWES的键盘事件回调函数的副本以及初始化硬件和IST来处理中断。当按键中断产生的时候,键盘驱动负责转换硬件扫描码为虚拟键码,并且通过键盘事件回调函数KeybdEventCallback或者keybd_event函数来传递扫描码和虚拟键码给GWES。后来,GWES从队列中取出键盘事件并回调PF

8、N_KEYBD_DRIVER_VKEY_TO_UNICODE指针函数类型的KeybdDriverVKeyToUnicode函数来分析指定的按键事件和把虚拟键码映射为

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

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

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