好吧,我事先会说,我知道这不是一个新概念......但无论我研究什么似乎都没有用。基本上,我希望能够感知键盘上的每个键,包括不同的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代码。建议?谢谢!
答案 0 :(得分:0)
https://processing.org/reference/keyPressed_.html
每次按下一个键时,都会调用一次keyPressed()函数。按下的键存储在键变量中。
如果要覆盖keyPressed,则必须使用相同的签名,因此没有参数,在方法中可以引用PApplet的键变量
像这样我相信 void keyPressed()
** int location = key
编辑:int location = keyEvent