問題描述
我希望我的應用支持鍵盤快捷鍵.許多設備,例如 Asus Transformer
都有帶有 Ctrl 鍵的外部鍵盤(在 API 級別 11 上可用).我編寫了一些代碼,以檢查 Ctrl 鍵是否在模擬器中有效:
I want my app to support keyboard shortcuts. Many devices, such as Asus Transformer
have external keyboard which has Ctrl key (available on API Level 11). I've made some code, to check if Ctrl key works in emulator:
@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);
}
不幸的是,它在模擬器中不起作用,我無法在真實硬件上檢查它.
Unfortunately it doesn't work in emulator and I can't check it on real hardware.
我有兩個問題:
1. 它可以在像 Asus Transformer
這樣的設備上運行嗎?
2.為什么Ctrl鍵在模擬器中不起作用?
I have two questions:
1. Would it work on device like Asus Transformer
?
2. Why Ctrl key does not work in emulator?
我試圖找到問題的答案或解決方案,但 Google 和 SO 都沒有幫助.
I tried to find an answer or solution to my problem, but neither Google nor SO helped.
推薦答案
1.它可以在像 Asus Transformer 這樣的設備上運行嗎?
我用物理鍵盤(Asus 的標準擴展塢)檢查了我的 Asus Transformer TF101,并且您的代碼運行良好.我認為您可以毫無問題地使用它.
I've checked on my Asus Transformer TF101 with physical keyboard (standard docking station from Asus) and your code works fine. I think you can use it without problems.
<強>2.為什么 CTRL 鍵在模擬器中不起作用?
查看可以映射的按鈕列表(對于使用 emulator -keyset
的示例)我認為當前版本的模擬器不支持直接 Ctrl
鍵映射,所以你在這里不走運.
Looking at the list of buttons that can be mapped (for example using emulator -keyset
) I don't think that current version of emulator supports direct Ctrl
key mapping, so you're out of luck here.
這篇關于自定義鍵盤快捷鍵的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!