Android下添加新的自定义键值和按键处理流程
Android下添加新的自定义键值和按键处理流程
首先分析下Android下怎么添加新的自定义键值。在Android的原生系统中键值默认情况下是92个,从0-91;一般情况下,这些键值是够用的,但是如果想扩充的话,还是需要添加新的键值的,那么如何将一个新的键值从驱动的设置映射到上层,使应用可以对我们自定义的键值进行相应的处理呢?

- <span style=< span="">"font-family:FangSong_GB2312;font-size:18px;">shell@orange:/ # cat /proc/bus/input/devices
- I: Bus=0018 Vendor=3697 Product=0001 Version=0001
- N: Name="MStar Smart TV IR Receiver"
- P: Phys=/dev/ir
- S: Sysfs=/devices/virtual/rc/rc0/input0
- U: Uniq=
- H: Handlers=kbd event0
- B: PROP=0
- B: EV=13
- B: KEY=fc0000 0 fc900 142851 0 0 0 0 108000 1a8 c0000c01 9e37c0 48007 f8000000 10000ffc
- B: MSC=10
- I: Bus=0000 Vendor=0000 Product=0000 Version=0000
- N: Name="MCE IR Keyboard/Mouse (ir)"
- P: Phys=/input0
- S: Sysfs=/devices/virtual/input/input1
- U: Uniq=
- H: Handlers=kbd mouse0 event1
- B: PROP=0
- B: EV=100017
- B: KEY=30000 0 7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe
- B: REL=3
- B: MSC=10
- shell@orange:/ #
- shell@orange:/ #
通过打印信息我们可以知道,我们的终端设备使用的是Vendor_3697_Product_0001.kl文件,我这里只分析IT遥控设备,那我们的Vendor_3697_Product_0001.kl里面又是啥呢,我们可以通过cat命令查看,具体的信息如下:
- <span style=< span="">"font-family:FangSong_GB2312;font-size:18px;"># Copyright (C) 2010 The Android Open Source Project
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- # MStar Smart TV IR Receiver.
- #
- key 116 POWER WAKE
- key 11 0
- key 2 1
- key 3 2
- key 4 3
- key 5 4
- key 6 5
- key 7 6
- key 8 7
- key 9 8
- key 10 9
- key 398 PROG_RED
- key 399 PROG_GREEN
- key 400 PROG_YELLOW
- key 401 PROG_BLUE
- key 103 DPAD_UP
- key 108 DPAD_DOWN
- key 105 DPAD_LEFT
- key 106 DPAD_RIGHT
- key 28 ENTER
- key 402 CHANNEL_UP WAKE_DROPPED
- key 403 CHANNEL_DOWN WAKE_DROPPED
- key 115 VOLUME_UP WAKE_DROPPED
- key 114 VOLUME_DOWN WAKE_DROPPED
- key 104 PAGE_UP
- key 109 PAGE_DOWN
- key 102 HOME WAKE_DROPPED
- key 139 MENU WAKE_DROPPED
- key 158 BACK
- key 113 VOLUME_MUTE
- key 167 DVR
- key 138 GUIDE
- key 358 INFO
- #key 82 WINDOW
- #key 79 TV_INPUT
- key 168 MEDIA_REWIND
- key 159 MEDIA_FAST_FORWARD
- key 165 MEDIA_PREVIOUS
- key 163 MEDIA_NEXT
- key 207 MEDIA_PLAY
- key 119 MEDIA_PAUSE
- key 128 MEDIA_STOP
- # Common extended
- key 392 SOUND_MODE
- key 212 PICTURE_MODE
- key 372 ASPECT_RATIO
- key 363 CHANNEL_RETURN
- key 142 SLEEP
- key 365 EPG
- key 395 LIST
- #key 370 SUBTITLE
- key 466 MTS
- key 467 FREEZE
- key 468 TTX
- key 469 CC
- key 470 TV_SETTING
- key 471 SCREENSHOT
- key 356 TV_POWER
- # Mstar extended
- key 59 MSTAR_BALANCE
- key 60 MSTAR_INDEX
- key 61 MSTAR_HOLD
- key 62 MSTAR_UPDATE
- key 63 MSTAR_REVEAL
- key 64 MSTAR_SUBCODE
- key 65 MSTAR_SIZE
- key 66 MSTAR_CLOCK
2)在Vendor_3697_Product_0001.kl文件中添加映射
123 -- 该按键在linux驱动中对应的键值,我在这里只是假设的这个值,至于具体对应的是那个可以查看“include/linux/input.h”
WLS -- 123按键映射到Android中的按键,它对应是“KeycodeLabels.h”文件中的KEYCODES表格元素的“literal”值。
其中KeycodeLabels.h的定义如下,我们可以在"MSTAR_PVR_BROWSER", 319后面添加我们需要向Android上层抛的键值,我们这里定义为"WLS", 320,所以当Android上层监听到320的按键值是就是我们新添加的键值了。
Android下添加新的自定义键值和按键处理流程的更多相关文章
- Android下添加新的自定义键值和按键处理流程【转】
本文转载自: Android下添加新的自定义键值和按键处理流程 说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一 ...
- STL: unordered_map 自定义键值使用
使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...
- Ubuntu下添加新分区并设置挂载点
Ubuntu下添加新分区并设置挂载点 最近在做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小 ...
- map自定义键值类型
map自定义键值类型 改变Map的默认比较方式 https://www.cnblogs.com/zjfdlut/archive/2011/08/12/2135698.html 大家知道,STL中的ma ...
- 痞子衡嵌入式:MCUXpresso IDE下添加新路径下源文件进工程编译的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加新路径下源文件进工程编译的方法. 接着上篇文章 <MCUXpresso IDE下SDK工程导入与 ...
- std::map使用结构体自定义键值
使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数 struct Node{ int x,y; }; ...... map<Node,int>mp; m ...
- 【Android Developers Training】 24. 保存键值对
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Zabbix的自定义键值和自动发现功能监控Oracle数据库的表空间
前面介绍了利用Orabbix监控了,参考zabbix通过Orabbix监控oracle数据库,这里我们原先的模板中进行了修改,使用自动发现功能实现监控tablespace的使用情况. 1. 在被监控的 ...
- linux系统下添加新硬盘的方法详解
对于linux新手来说,在linux上添加新硬盘,是很有挑战性的一项工作. 在Linux服务器上把硬盘接好,启动linux,以root登陆. fdisk -l ## 这里是查看目前系统上有几块硬盘 D ...
随机推荐
- <把时间当做朋友>读书笔记
这本书我早就看过,还想再来一遍 开始这一行动是看李萌在朋友圈晒101计划,每天健身,读书半小时之类的,我也想做点啥,那就每天睡前读书半小时吧,怎么坚持下去呢? 我不想晒到朋友圈里,那就晒给玉玉看吧, ...
- NONUNIFORM MEMORY ACCESS
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION In terms of commercia ...
- Java Basic Exception
异常处理经验小结之一:不要直接抛出InvocationTargetException (转http://olylakers.iteye.com/blog/1137371) 在最近一段时间的工作中,积 ...
- Android Touch事件传递机制详解
Android开发的朋友经常处理各种触摸事件,然而在触摸事件的传递过程中主要用到三个方法:dispatchTouchEvent().onInterceptTouchEvent()和onTouchEve ...
- Alamofire 的使用
最近,AFNetworking 的作者Mattt Thompson提交了一个新的类似于 AFNetworking 的网络 基础库,并且是专门使用最新的 Swift 语言来编写的,名为:Alamofir ...
- 如果让你来做HashMap扩容,如何实现在不影响读写的情况下扩容?
我觉得逼格高,不是体现在问题多刁钻,知识点多深,而是一个非常明确,无歧义的问题,能考察出面试者多方面的能力.这个问题背后:1.了解java中,HashMap的实现:如果一个面试者了解这一点,说明至少他 ...
- bootstrap插件引用
若按照步骤报这种错误,从这几方面进行排错 1.引用css/js的顺序 2.是否以及引入相应的包 3.是否正确调用(此处需要注意有require.js的情况,要不把switch方法写入require里面 ...
- springmvc配置多视图 - tiles, velocity, freeMarker, jsp
转自: http://www.cnblogs.com/shanheyongmu/p/5684595.html <!-- Velocity --> <bean id="vel ...
- WP8.1 C#代码 添加/获取Grid.ColumnDefinitions/RowDefinitions
WP8.1: ColumnDefinitions和RowDefinitions的道理是相同的,语法顺序是一样的,只不过是将ColumnDefinitions换成RowDefinitions而已 获取并 ...
- 使用HTML5技术控制电脑或手机上的摄像头
移动设备和桌面电脑上的客户端API起初并不是同步的.最初总是移动设备上先拥有某些功能和相应的API,但慢慢的,这些API会出现在桌面电脑上.其中一个应用接口技术就是getUserMedia API,它 ...