使用 swt 处理按键

Posted

技术标签:

【中文标题】使用 swt 处理按键【英文标题】:Handle key presses using swt 【发布时间】:2011-04-21 23:44:54 【问题描述】:

CTRL-C 被按下时,我想做 someStuff()。我写了一些代码,但它“不够好”。我能用它做什么?)

    //org.eclipse.draw2d.Shape getShape()....

    getShape().addKeyListener(new KeyListener()

        @Override
        public void keyPressed(KeyEvent ke) 
        

        @Override
        public void keyReleased(KeyEvent ke) 
            /*if CTRL-C pressed*/
            if((ke.getState() & KeyEvent.CONTROL) != 0 && 'c' == ('a' + ke.character - 1))
                someStuff();
             
        
    );

谢谢。

【问题讨论】:

【参考方案1】:

试试这个:

getShape().addListener(SWT.KeyUp, new Listener() 
    public void handleEvent(Event event) 
        if (event.stateMask == SWT.CTRL && event.keyCode == 'c') 
            someStuff();
        
    );

【讨论】:

【参考方案2】:

尝试使用以下条件来检查 CTRL-C:

public void keyReleased(KeyEvent event) 
  if (event.getKeyCode() == KeyEvent.VK_C && event.getModifiers() == InputEvent.CTRL_MASK)
    someStuff();

【讨论】:

org.eclipse.draw2d.KeyEvent 不包含任何 VK_C 等等。如果我以某种不明显的形式提出问题,我很抱歉。 啊,我的错。那我不知道怎么帮你=/.

以上是关于使用 swt 处理按键的主要内容,如果未能解决你的问题,请参考以下文章

基础硬件——按键处理

基础硬件——按键处理

按键抖动的处理方法(按键外部中断)

单片机按键处理方式——典型的按键处理方式

Android 7.0 Power 按键处理流程

按键事件处理