目的:修改按键映射表,把一个已存在的键映射为自己想要的键,然后在应用程序中捕获它。

说明:本文并没有增加额外的按键。

按键格式:key  SCANCODE  KEYCODE  [FLAGS...]

当扫描码是一个数字,键码定义在你描述的布局文件android.keylayout.xxx,另外可以设置相关的FLAGS:
SHIFT: 当按下,自动加上SHIFT键值
ALT:当按下,自动加上ALT
CAPS:当按下,自动带上CAPS大写
WAKE:当按下,当设备进入睡眠的时候,按下这个键将唤醒,而且发送消息给应用层。

WAKE_DROPPED:当按下,且设备正处于睡眠,设备被唤醒,但是不发送消息给应用层。


开发板上的键盘映射表:

# cat TWL4030_Keypad.kl# OMAP3EVM keylayoutkey 25    MENU              WAKE_DROPPEDkey 24    BACK              WAKE_DROPPEDkey 49    DPAD_UP           WAKE_DROPPEDkey 37    HOME              WAKEkey 36    EXPLORER          WAKEkey 23    VOLUME_UPkey 28    DPAD_LEFT         WAKE_DROPPEDkey 33    DPAD_CENTER       WAKE_DROPPEDkey 18    DPAD_RIGHT        WAKE_DROPPEDkey 103   SEARCH            WAKEkey 108   VOLUME_DOWNkey 48  SOFT_LEFT         WAKE_DROPPEDkey 30    DPAD_DOWN         WAKE_DROPPEDkey 106   SOFT_RIGHT        WAKE_DROPPED#key 105   POWER             WAKE    
key 105   1             WAKE_DROPPED
   
修改最后一行:

key 105   1             WAKE_DROPPED
即可响应对按键1的响应。  把原来那个对PWER的响应改成对数字1的响应。


测试代码: 上层java应用程序

package com.android.dm3730.keytest;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.Gravity;import android.view.KeyEvent;import android.widget.TextView;import android.widget.Toast;public class DM3730KeyActivity extends Activity {private static final String Tag = "DM3730_KEYBOARD_TEST";private TextView tv = null;private String str = null;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                tv = (TextView)DM3730KeyActivity.this.findViewById(R.id.tv);    }    @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubstr = "按键为:"+ event.getKeyCode();switch(event.getKeyCode()){case KeyEvent.KEYCODE_1:{DisplayToastShort(DM3730KeyActivity.this,str);tv.setText("已经捕获到按键1,OK");}default:{break;}}return super.onKeyDown(keyCode, event);}public static void DisplayToastShort(Context context,String s){Toast toast=Toast.makeText(context, s, Toast.LENGTH_SHORT);toast.setGravity(Gravity.TOP,0, 220);toast.show();}}




更多相关文章

  1. Android(安卓)Activity 堆栈关系
  2. android 如何写签名及其作用
  3. Android学习【7】manifest文件讲解
  4. android 程序框架--资源和资产
  5. Android的几种分辨率
  6. Android开发必备的21个免费资源和工具
  7. Android(安卓)Launcher全面剖析
  8. Android(安卓)活动(Activity) 学习总结记录
  9. Kotlin概述之Kotlin for Android

随机推荐

  1. iOS和Android对比系列(一):生命周期
  2. android获取ip地址两种方式
  3. Android中画bitmap的简单示例
  4. 【Android策略决】android.content.res.R
  5. android gradle 优化构建时间
  6. android logger
  7. Android(安卓)手机震动效果
  8. Android(安卓)去除Gallery的边缘颜色
  9. android中设置按钮不同状态时按钮的效果
  10. android更新SDK时出现的问题