title: Using WASD and arrow keys simultaneously
body: <p>I am developing a two player game in Processing (running on Java). One user will control his character using the WASD keys and the other will control movement using the arrow keys. The problem I am having is that using <code>keyPressed</code> negates WASD when arrows are pressed and vice versa. I have been messing around with it for a really long time. Does anyone know a work around or notice something that I am doing wrong?</p>
  
  <pre><code>//global variables
  int wide = 600; //canvas width
  int tall = 600; //canvas height
  int s = 50; //player size
  float speed = 2.5; //player movement speed
  
  //colors
  int redColor = #CB4646; //player 1 color
  int blueColor = #4652CB; //player 2 color
  int backgroundColor = #DBE3B3; //background color
  float player1X = 600/3-s;  //HOW COME width/3 DOESN'T WORK??????????
  float player2X = 600*2/3;
  float playerY = 600/2-(s/2);
  
  //players
  Player player1 = new Player(player1X, playerY, s, speed, "wasd", redColor); //player 1
  Player player2 = new Player(player2X, playerY, s, speed, "arrows", blueColor); //player 2
  
  //setup
  void setup(){
    background(backgroundColor);
    size(wide, tall);
    smooth();
    println(player2.controls);
  }
  
  //draw
  void draw(){
    background(backgroundColor);
    player1.usePlayer();
    player2.usePlayer();
  }
  
  class Player{
  
     //class variables
     float x; // x position
     float y; // y position
     int s; //size
     float speed; //speed
     String controls; //controls
     int colors; //player color
     char keyControls [] = new char [4];
  
     //construct
     Player(float tempX, float tempY, int tempS , float tempSpeed, String tempControls, int tempColors){
       x = tempX; 
       y = tempY; 
       s = tempS; 
       speed = tempSpeed; 
       controls = tempControls; 
       colors = tempColors; 
     }
  
     void usePlayer(){
  
       // draw player
       fill(colors);
       rect(x, y, s, s);
  
       //move player
       keyPressed();
  
       //wraparound
       boundaries();
  
     }
  
     void keyPressed(){
  
       //sets controls for wasd
       if(controls == "wasd"){ 
            if(key == 'w' || key == 'W'){ 
              y -= speed; //move forwards
            }
            if(key == 's' || key == 'S'){
              y += speed; //move backwards
            }
              if(key == 'd' || key == 'D'){
              x += speed; //move right
            }
            if(key == 'a' || key == 'A'){
              x -= speed; //move left
            }
           }
  
        //sets controls for arrows 
        if(controls == "arrows"){ 
          if(key == CODED){
            if(keyCode == UP){ 
              y -= speed; //move forwards
            }
            if(keyCode == DOWN){
              y += speed; //move backwards
            }
              if(keyCode == RIGHT){
              x += speed; //move right
            }
            if(keyCode == LEFT){
              x -= speed; //move left
            }
           }  
          }  
         }
  
      //pacman style wraparound
      void boundaries(){
       if(x == width) x = 2;
       if(y == height) y = 2;
       if(x == 0) x = width-s;
       if(y == 0) y = height-s;
      }
  }
  </code></pre>