Android修改键可以回退动作吗?

时间:2012-10-23 18:50:38

标签: android android-keypad android-hardware

我正在开发一个输入设备,它有一个按钮,当我自己按下时,它既可以作为主页按钮,也可以作为设备上其他按钮的修改器。

我知道你可以使用其他按钮在kcm文件中执行此操作,并具有以下内容:

key ESCAPE {
    base:                               fallback BACK
    alt, meta:                          fallback HOME
    ctrl:                               fallback MENU
}

是否可能有类似的内容:

key CTRL_LEFT {
    base:                               fallback HOME
    {SOMETHING HERE}:                   CTRL_LEFT
}

这样我可以用另一个按钮按下那个按钮并让它不在HOME上回退?

提前致谢! :d

1 个答案:

答案 0 :(得分:1)

在系统级别上无法使用此功能:请参阅 http://source.android.com/tech/input/key-character-map-files.html获取所有可能选项的列表。

但是,如果您希望在应用程序级别上使用它,可以按如下方式对其进行编程:

import android.view.KeyEvent;

private boolean home = false;

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
   if (event.getScanCode() == 29)        //29 == CTRL_LEFT
     home = true;        //if we release this button, HOME needs to be invoked
   else home = false;    //so CTRL_LEFT was used as a modifier: no need to invoke HOME

   //allow the system to pass key handling to the next listener
   return super.onKeyUp(keyCode, event);
}

public boolean onKeyUp(int keyCode, KeyEvent event)
{
   if (event.getScanCode() == 29 && home == true)
   {
     super.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HOME));
     return true;        //so we absorb the event
   }
   return super.onKeyUp(keyCode, event);
}

然后,只要此应用程序设置为接收击键(通常是隐私问题,除非您自己编码),它可以处理击键并在需要时调度HOME按钮。

如果您决定继续这样做,则必须删除

base:                               fallback HOME

来自你的代码。

相关问题