1

我目前正在处理一些有关双鼠标输入的问题。我查看了几个库并决定 JInput 会做得最好。尽管我能够获得插入笔记本电脑的所有设备的列表,但我无法检索任何 PollData。以下代码仅产生 0:

public static void main(String[] args) {

    Controller mouse1 = null;
    Controller[] cs = ControllerEnvironment.getDefaultEnvironment().getControllers();
    for(int i = 0; i < cs.length; i++) {
        if(cs[i].getType() == Type.MOUSE) {
            mouse1 = cs[i];
        }
    }
    mouse1.poll();
    Component[] comps = mouse1.getComponents();
    while(true) {
        mouse1.poll();
        for(int i = 0; i < comps.length; i++) {
            System.out.print(comps[i].getName() + ": ");
            System.out.println(comps[i].getPollData());
        }
    }
}

我也试过用这个来获得键盘输入,同样的问题。我可以获得密钥的数量,但我无法访问有关密钥状态的任何信息。我希望有人知道如何解决这个问题,或者知道是什么原因造成的。

提前谢谢你,aquatyp。

4

1 回答 1

1

我知道这已经快一年了,但为了任何像我一样通过谷歌找到这个的人的利益......

确保初始化了 OpenGL 显示(注意 if 语句只是为了消除消息泛滥):

import net.java.games.input.Controller;
import net.java.games.input.ControllerEnvironment;
import net.java.games.input.Mouse;
import net.java.games.input.RawInputEnvironmentPlugin;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

public class Main
{
	public static void main(String[] args)
	{
		try
		{
			Display.setDisplayMode(new DisplayMode(800,600));
			Display.create();
		}
		catch (LWJGLException e)
		{
			e.printStackTrace();
			System.exit(0);
		}
		
		RawInputEnvironmentPlugin rep = new RawInputEnvironmentPlugin();
		Mouse mouse;
		StringBuilder sb = new StringBuilder();
		while (!Display.isCloseRequested())
		{
			int i = 0;
			for (Controller controller : ControllerEnvironment.getDefaultEnvironment().getControllers())
			{
				if (controller.getType() == Controller.Type.MOUSE)
				{
					//System.out.println(controller.getName() + " | " + controller.getType());
					mouse = (Mouse)controller;
					mouse.poll();
					
					i += 1;
					
					if (mouse.getX().getPollData() > 0.0f || mouse.getY().getPollData() > 0.0f)
					{
						sb.append("[");
						sb.append(i);
						sb.append("] X=");
						sb.append(mouse.getX().getPollData());
						sb.append(" Y=");
						sb.append(mouse.getY().getPollData());
						System.out.println(sb.toString());
						sb.setLength(0);
					}
					
				}
			}
			
			Display.update();
		}
	}
}

于 2015-02-19T14:12:59.953 回答