在处理3中区分左右移位键

时间:2016-12-11 21:37:19

标签: java input processing keyevent

好吧,我事先会说,我知道这不是一个新概念......但无论我研究什么似乎都没有用。基本上,我希望能够感知键盘上的每个键,包括不同的shift / ctrl / alt / enter键。除了这些之外的每一个键都返回一个唯一的keyCode,这是好的,但我似乎无法区分这些重复。

没有任何修改,void keyPressed ()将正常工作。我被告知要区分重复的密钥,我可以import java.awt.event.KeyEvent;,然后使用

void keyPressed (KeyEvent e) {
  if (keyCode == SHIFT) {
    int location = e.getKeyLocation ();
    if (location == KEY_LOCATION_RIGHT) {
      RShift = true;
    }
    if (location == KEY_LOCATION_LEFT) {
      LShift = true;
    }
  }
}

但是,出现了一些问题:

  • 如果我导入库,keyPressed ()永远不会被调用。
  • 如果我导入库但是取出keyPressed ()中的KeyEvent参数,只要我注释掉对不存在的KeyEvent e的任何引用,它就会起作用。
  • 如果我不导入它并保留参数,只会抱怨getKeyLocation ()不存在,但就是这样。

我需要像反向覆盖或其他什么?非常感谢帮助!

P.S。另一个相关的问题是,如何区分左,中,右鼠标按钮?我可以得到这些和滚轮但任何其他按钮只返回一个0的mouseButton代码。建议?谢谢!

1 个答案:

答案 0 :(得分:0)

https://processing.org/reference/keyPressed_.html

每次按下一个键时,都会调用一次keyPressed()函数。按下的键存储在键变量中。

如果要覆盖keyPressed,则必须使用相同的签名,因此没有参数,在方法中可以引用PApplet的键变量

像这样我相信

void keyPressed()
** int location = key

编辑:int location = keyEvent