我试图在外接键盘的帮助下在Android应用程序中调用ctrl + c或ctrl + d中的某些事件。为此我们所做的如下所示
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
flag_sellreceipt=KeyEvent.isModifierKey(KeyEvent.KEYCODE_CTRL_LEFT);
}
if (keyCode == KeyEvent.KEYCODE_D && flag_sellreceipt) {
HotkeyForDone();
flag_sellreceipt = false;
}
if (keyCode == KeyEvent.KEYCODE_C && flag_sellreceipt) {
try {
cancelCart();
flag_sellreceipt = false;
} catch (Exception e) {
handleException(Present.this, e,"In some screen" + e.toString(),null);
e.printStackTrace();
flag_sellreceipt = false;
}
}
}
这正如我所希望的那样正常,但有些事情发生是不可取的。 Ctrl + d或Ctrl + c一起工作正常,但是发生了什么假设用户只按ctrl一段时间后用户按d或c然后按Ctrl + d或Ctrl + c调用这是非常不受欢迎的事件。它应该只在ctrl和alphabet同时按下时发生。任何机构都可以帮我解决这个问题,或者请建议我让我解决这个问题。提前感谢所有
答案 0 :(得分:0)
为什么要这样编程呢?尝试使用PC上的键盘 - 如果你按住控制2分钟,然后点击c,它仍然是一个ctrl + c,因为你仍然有控制权。
如果您确实想要出于某种奇怪的原因这样做,请保持按下控制键的时间。在onKeyUp中,如果按下控制键的时间超过X毫秒(其中x是一些合理的值,如200左右),请清除你用来将控件标记为关闭的fllag。
答案 1 :(得分:0)
解决问题
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
flag_sellreceipt = false;
}
}
并且
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
flag_sellreceipt=KeyEvent.isModifierKey(KeyEvent.KEYCODE_CTRL_LEFT);
int i = KeyEvent.META_CTRL_LEFT_ON;
System.out.println("ctrl is pressed");
}
return super.onKeyDown(keyCode, event);
}