如何为两个按钮生成 KeyEvent?也就是说,生成两个按钮的组合,例如 Alt 和 G。
我尝试了以下方法,但它不起作用:
public boolean dispatchKeyEvent(KeyEvent event) {
Log.d("KeyEvent","event= "+event);
if (event.getAction() != KeyEvent.ACTION_UP){
switch (event.getKeyCode()){
case KeyEvent.KEYCODE_F10:
case KeyEvent.KEYCODE_PROG_GREEN:
{
new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_G | KeyEvent.KEYCODE_ALT_LEFT);
return false;
}
case KeyEvent.KEYCODE_F9:
case KeyEvent.KEYCODE_PROG_RED:{
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_H | KeyEvent.KEYCODE_ALT_LEFT));
return false;
}
case KeyEvent.KEYCODE_F11:
case KeyEvent.KEYCODE_PROG_YELLOW:{
simulateKey(KeyEvent.KEYCODE_ALT_LEFT & KeyEvent.KEYCODE_Y);
return false;
}
case KeyEvent.KEYCODE_F12:
case KeyEvent.KEYCODE_PROG_BLUE:{
simulateKey(KeyEvent.KEYCODE_ALT_LEFT | KeyEvent.KEYCODE_B);
return false;
}
}
return true;
}
return super.dispatchKeyEvent(event);
}
public static void simulateKey( final int KeyCode) {
new Thread() {
@Override
public void run() {
try {
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyCode);
} catch (Exception e) {
Log.e("Exception", e.toString());
}
}
}.start();
}
因为 你需要一个组合键,那么我认为你应该通过 mask 传递代码 B
META_ALT_ON。我想是这样的。更新:
META_ALT_ON | KEYCODE_B终于解决了问题。原来一切都很简单。