Processing如何知道用户同时按下多个键?

时间:2014-01-27 09:08:52

标签: processing keycode ctrl

我不知道Processing如何知道用户同时按下Ctrl和某个字符。

仅限多个按钮。可能吗?

ex:(Ctrl+r)。

3 个答案:

答案 0 :(得分:1)

您必须先检查是否按下了Ctrl键。如果已按下,则将布尔值保存为true。下次按下按钮时,检查按钮是否是您想要的按钮(即' r')以及布尔值是否为真。如果两者都为真,那么Processing知道......

这是一个示范:

boolean isCtrlPressed = false;
boolean isRPressed = false;
void draw() {
  background(0);
  fill(255);
  if (isCtrlPressed) background(255, 0, 0);
  if (isRPressed) background(0, 255, 0);
  if (isCtrlPressed && isRPressed) background(255, 255, 0);
}
void keyPressed() {
  if (keyCode == CONTROL && isCtrlPressed == false) isCtrlPressed = true;
  if (char(keyCode) == 'R') isRPressed = true;

}
void keyReleased() {
  if (keyCode == CONTROL) isCtrlPressed = false;
  if (char(keyCode) == 'R') isRPressed = false;
}

答案 1 :(得分:1)

我知道这是一个非常古老的提要,但是我有一些可以帮助所有人进行多次按键操作的内容。这是用于Processing的Python模式的,但是我敢肯定它可以以其他方式实现于其他模式。

import string

#string.printable is a pre-made string of all printable characters (you can make your own)
keys = {}
for c in string.printable:
    #set each key to False in the keys dictionary
    keys[c] = False

def keyPressed():
    #If key is pressed, set key in keys to True
    keys[key] = True

def keyReleased():
    #If key is released, set key in keys to False
    keys[key] = False

然后使用多个if语句,您可以检查字典中是否按下了键。

if keys['w'] == True:
   #Do something
if keys['s'] == True:
   #Do something
if keys['a'] == True:
   #Do something
if keys['d'] == True:
   #Do something
if keys[' '] == True:
   #Do something

以此类推。 希望这会有所帮助!

答案 2 :(得分:0)

您还可以覆盖keyPressed(KeyEvent)方法并使用KeyEvent.isControlDown()方法:

void keyPressed(KeyEvent ke) {
  println(ke.isControlDown());
}

void draw(){
  //need draw() method for keyPressed() to work
}