我希望我的应用支持键盘快捷键。许多设备(例如Asus Transformer
)具有外部键盘,其具有 Ctrl 键(在API级别11上可用)。我做了一些代码,检查 Ctrl 键是否在模拟器中起作用:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(Build.VERSION.SDK_INT>10 &&
event.getAction()==KeyEvent.ACTION_DOWN &&
event.isCtrlPressed()){
String actionType="NONE";
final int keyCode = event.getKeyCode();
switch(keyCode){
case KeyEvent.KEYCODE_C:
actionType = "COPY";
break;
case KeyEvent.KEYCODE_V:
actionType = "PASTE";
break;
case KeyEvent.KEYCODE_X:
actionType = "CUT";
break;
case KeyEvent.KEYCODE_R:
actionType = "REFRESH";
break;
case KeyEvent.KEYCODE_A:
actionType = "SELECT ALL";
break;
}
Toast.makeText(ctx, actionType, Toast.LENGTH_SHORT).show();
return true;
}
return super.dispatchKeyEvent(event);
}
不幸的是它在模拟器中不起作用,我无法在真实硬件上检查它。
我有两个问题:
1.它会在像Asus Transformer
这样的设备上运行吗?
2.为什么 Ctrl 键在模拟器中不起作用?
编辑:我试图找到问题的答案或解决方案,但Google和SO都没有帮助。
答案 0 :(得分:1)
<强> 1。它会在Asus Transformer等设备上运行吗?
我已经使用物理键盘(来自 Asus 的标准扩展坞)检查了我的 Asus Transformer TF101 ,并且您的代码正常。我认为你可以毫无问题地使用它。
<强> 2。为什么CTRL键在模拟器中不起作用?
查看list of buttons that can be mapped(例如使用emulator -keyset
)我不认为当前版本的模拟器支持直接Ctrl
键映射,所以你在这里运气不好。