2010-10-28 4 views
1

J'essaie d'utiliser LWJGL pour savoir si une touche est enfoncée. Si la touche d'échappement est enfoncée, l'application se ferme. Cependant, je n'arrive pas à lire les entrées au clavier, bien que Display.isCloseRequested() fonctionne correctement.LWJGL ne lit pas l'entrée au clavier

Je suis sur RHEL en utilisant LWJGL 2.6 et Java 1.6.

for(;;) { 
    // check if we want to quit 

    if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) { 
     System.exit(0); // can't get this to happen! 
    } 
    if(Display.isCloseRequested()) { 
     System.exit(0); 
    } 

/* timer code omitted */ 

    render(); 
    Display.update(); 
} 

Edit: Le même code fonctionne parfaitement bien sur ma boîte de Windows, avec les mêmes versions de LWJGL et JRE.

Répondre

0

Peut-être que vous pouvez vérifier si le clavier est créé avec la fonction isCreated? Par ailleurs, je ne suis pas très bon en programmation, donc je ne peux pas vous fournir d'autres informations.

essayer cette

Keyboard.isCreated() 
0

je ou ne peut pas être utile/faire revivre un sujet mort, mais pour toutes les Googlers voyous Je vous donne ceci:

It's my Input class from my Zdeva Engine

Ici, vous allez, sans avoir à télécharger l'ensemble du «moteur» ..

package LWJGL; 

import org.lwjgl.input.Keyboard; 
import org.lwjgl.input.Mouse; 

public class Input 
{ 
    public static boolean[] mouseButtons = {false, false, false}; 
    public static int[] mousePos = new int[Mouse.getButtonCount()]; 
    public static int[] keysBound = {Keyboard.KEY_A, Keyboard.KEY_B}; 

    /** 
    * Initializes the input system. Loads keyconfig. 
    * 
    */ 
    public static void init() 
    { 
     System.out.println("Initializing input system..."); 
     //Eventually will check for OS, and adjust keys accordingly. 
     System.out.println("Input system initialized!"); 
    } 

    /** 
    * Updates all mouse info, keys bound, and performs actions. 
    */ 
    public static void tick() 
    { 
     mouseButtons[0] = Mouse.isButtonDown(0); 
     mouseButtons[1] = Mouse.isButtonDown(1); 

     mousePos[0] = Mouse.getX(); 
     mousePos[1] = Mouse.getY(); 

     while(Keyboard.next()) 
     { 
      if(Keyboard.getEventKeyState()) 
      { 
       doAction(Keyboard.getEventKey(), false); 
      } 
     } 

     for(int key : keysBound) 
     { 
      if(Keyboard.isKeyDown(key)) 
      { 
       doAction(key, true); 
      } 
     } 

     while(Mouse.next()) 
     { 
      doAction(-1, false); 
     } 
     doAction(0, true); 
    } 

    /** 
    * Does the associated action for each key. Called automatically from tick. 
    * @param key The key to check & perform associated action 
    */ 
    public static void doAction(int key, boolean ifRepeat) 
    { 
     if(mouseButtons[0]) 
     { 

     } 
     if(mouseButtons[1]) 
     { 

     } 
     if(key == keysBound[0] & ifRepeat) 
     { 
      System.out.println("a"); 
     } 
     if(key == keysBound[1] & !ifRepeat) 
     { 
      System.out.println("b");    
     } 
    } 
} 
Questions connexes