获取组合键 [英] Get key combinations

查看:141
本文介绍了获取组合键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何获取键盘E.G.上的按键组合( Ctrl + somekey Alt + somekey )与Java?

How can I get key combination of keys on keyboard E.G. (Ctrl+somekey, Alt+somekey) with Java?

我使用KeyEvent侦听器,MouseEvent侦听器用于键盘上的所有键.我可以使用该侦听器捕获键盘上的所有按键事件.但是,我无法捕捉到诸如( Ctrl + Alt + Del )等组合键.

I use KeyEvent listener, MouseEvent listener for all keys on keyboard. I can catch all key event on keyboard by using that listener. But, I cannot catch key combination such as (Ctrl+Alt+Del)....etc.

推荐答案

@Override
public void keyPressed(KeyEvent evt) {
         if (evt.getKeyCode()==KeyEvent.VK_CONTROL) { ctrl  = true; }
    else if (evt.getKeyCode()==KeyEvent.VK_SHIFT)   { shift = true; }
    else if (evt.getKeyCode()==KeyEvent.VK_ALT)     { alt   = true; }
    else {
        keyHit = KeyEvent.getKeyText( evt.getKeyCode() );
        System.out.println("Key Hit is "+keyHit);
    }

    processLocalKeyEvent(evt);
}

@Override
public void keyReleased(KeyEvent evt) {

    if (evt.isControlDown() && keyHit != "") ctrl  = true;
    if (evt.isAltDown()     && keyHit != "") alt   = true;
    if (evt.isShiftDown()   && keyHit != "") shift = true;

    if (ctrl)  sb.append("Ctrl");
    if (shift) sb.append("Shift");   
    if (alt)   sb.append("Alt"); 
    if (!ctrl && !shift && !alt) {
        sb.append(keyHit);
    } else {
        sb.append("_"+keyHit);
    }

    if (ctrl || shift || alt) {
        Thread thread = new Thread();
        try {
            thread.sleep(300);
            rfbProto.capture();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } else if ((ctrl || shift || alt) && keyHit=="") {
        rfbProto.capture();
    } else if ((!ctrl || !shift || !alt) && keyHit!="") {
        rfbProto.capture();
    }

    ctrl  = false;
    shift = false;
    alt   = false;
    keyHit = "";
    sb = new StringBuffer();
    processLocalKeyEvent(evt);
}

这篇关于获取组合键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆