自定义键盘快捷键

7

我希望我的应用程序支持键盘快捷键。许多设备,如华硕变形,都有外部键盘,其中包含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 键不起作用?

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


大多数设备上没有CTRL键(至少在大多数软键盘上没有)。 - njzk2
但是硬件键盘上的CTRL键怎么办? - Chris Miemiec
1个回答

1

1. 它能在像华硕变形笔记本这样的设备上运行吗?

我已经在我的带有物理键盘(来自华硕的标准对接站)的 Asus Transformer TF101 上进行了检查,你的代码可以正常工作。我认为你可以毫无问题地使用它。

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

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


谢谢回复!这是个好消息。我认为添加修改键选项是个好主意,以便为所有使用 Android 设备键盘的人提供支持。 - Chris Miemiec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接