7

我希望我的应用程序支持键盘快捷键。许多设备,例如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. 为什么Ctrlkey在模拟器中不起作用?

编辑:我试图找到我的问题的答案或解决方案,但谷歌和 SO 都没有帮助。

4

1 回答 1

1

1. 它可以在像 Asus Transformer 这样的设备上工作吗?

我用物理键盘(华硕的标准扩展坞)检查了我的华硕Transformer TF101 你的代码工作正常。我认为您可以毫无问题地使用它。

2. 为什么CTRL键在模拟器中不起作用?

查看可以映射的按钮列表(例如使用emulator -keyset)我认为当前版本的模拟器不支持直接Ctrl键映射,所以你在这里不走运。

于 2012-11-02T20:38:33.063 回答