KVM(PHONEME FEATURE)按键适配方法

来源:互联网 发布:vs2017 for mac 离线 编辑:程序博客网 时间:2024/05/29 10:11
  最近在搞j2me的虚拟机phoneme feature,后台配置为directfb。因为我是在嵌入式设备上开发的。除了directfb的按键需要做一些特殊处理外,java虚拟机对directfb的按键适配也需要处理。

      在KVM中按键适配的代码主要在fb相关的几个文件中,其中对多套手机按键做了按键物理键值和虚拟键值的映射表,会在初始化按键设备的时候根据设备类型做出选择使用哪一套映射表。

      KVM中对directfb的按键获取并没有使用directfb的事件通知机制,而是自己查询按键。不断从directfb中读取按键并用初始化时选择的映射表做按键硬件码到虚拟键的转换。

      KVM的fb_handle_input.c是主要获取按键处理的代码,觉得奇怪的是为什么使用效率低的查询机制,而不使用directfb的事件通知机制。也许跟其上层的处理方式有关吧!

      为其适配键盘,首先需要为其建立映射表,虽然directfb会将按键硬件码传递上来,但我选择使用directfb的diks码,这是虚拟键值和硬件无关。这样以后使用键盘,遥控器或者其它的非linux标准按键设备时,只要directfb做好适配,就不会有什么问题了!

      第二步,需要在读取directfb按键时把传递硬件码改为传递key_symbol. 这需要修改的是read_directfb_key_event函数!

      OK,搞定,KVM可以响应按键了!但似乎有些按键不能响应,分析了一遍按键映射转换函数,发现是有按键映射重复了,directfb中"\n",select_ok, enter都是对应DIKS_ENTER。但KVM做选择时候只认select_ok. 这可能是KVM是针对手机等设备设计的,这些设备“\n”, select,enter都不是同一个按键的原因吧!

0 0
原创粉丝点击