我正在开发一个输入设备,它有一个按钮,当我自己按下时,它既可以作为主页按钮,也可以作为设备上其他按钮的修改器。
我知道你可以使用其他按钮在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
答案 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
来自你的代码。