2010-10-28 87 views
1

我正在尝试使用LWJGL来获取是否按下某个键。如果按下退出键,则应用程序退出。然而,我不能让它读取任何键盘输入,虽然Display.isCloseRequested()工作正常。LWJGL不会读取键盘输入

我在RHEL上使用LWJGL 2.6和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(); 
} 

编辑:完全相同的代码工作在我的Windows机器完全正常,与LWJGL和JRE的版本相同。

回答

0

也许你可以检查键盘是否与isCreated函数一起创建?

除此之外,我并不是那么擅长编程,所以我无法为您提供任何其他输入。

试试这个

Keyboard.isCreated() 
0

我可能会或可能不会有帮助/这里的复活死去的话题,但对于任何恶意的Google我给你这个:

It's my Input class from my Zdeva Engine

在这里你去,而不必下载整个'引擎'。

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");    
     } 
    } 
}