Java using Xbox controller

痴心易碎 提交于 2019-12-21 10:18:05

问题


What library would you recommend to hook up my Xbox 360 controller to Java, and be able to read key inputs into keyPressed Event as a KeyEvent.

So I would like something like this

private class KeyInputHandler extends KeyAdapter {
    public void keyPressed(KeyEvent e) {
    }
}

And I want all the controller presses to go into keyPressed.

I would appreciate it even further if you can provide good libraries for PS3 controllers too.


回答1:


The wired XBox 360 controller will present as a joystick in Windows, so a library like JXInput will allow you to accept inputs from it.

Simple example

JXInput site




回答2:


There is an open-source project called Jamepad. Download the project and add it to the dependencies of your project. It works out-of-the-box with my wireless Xbox 360 controller.

I made a game with the following input types:

public enum InputAction {
    MOVE_UP, MOVE_DOWN, MOVE_LEFT, MOVE_RIGHT
}

The following class will then handle your controller and convert the input to your own internal representation.

public class GamepadInput {
    private final ControllerManager controllers;

    public GamepadInput() {
        controllers = new ControllerManager();
        controllers.initSDLGamepad();
    }

    Set<InputAction> actions() {
        ControllerState currState = controllers.getState(0);
        if (!currState.isConnected) {
            return Collections.emptySet();
        }

        Set<InputAction> actions = new HashSet<>();
        if (currState.dpadLeft) {
            actions.add(InputAction.MOVE_LEFT);
        }
        if (currState.dpadRight) {
            actions.add(InputAction.MOVE_RIGHT);
        }
        if (currState.dpadUp) {
            actions.add(InputAction.MOVE_UP);
        }
        if (currState.dpadDown) {
            actions.add(InputAction.MOVE_DOWN);
        }
        return actions;
    }
}


来源:https://stackoverflow.com/questions/17099787/java-using-xbox-controller

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!