Java使用Xbox控制器

时间:2013-06-14 01:29:57

标签: java xbox360

您建议将我的Xbox 360控制器连接到Java,并能够将关键输入作为KeyEvent读入keyPressed事件。

所以我想要这样的东西

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

我希望所有控制器按下进入keyPressed。

如果您能为PS3控制器提供良好的库,我将非常感激。

2 个答案:

答案 0 :(得分:7)

有线XBox 360控制器将在Windows中作为操纵杆呈现,因此像JXInput这样的库将允许您接受来自它的输入。

Simple example

JXInput site

答案 1 :(得分:1)

有一个名为Jamepad的开源项目。 下载项目并将其添加到项目的依赖项中。 它可以与我的无线Xbox 360控制器直接使用。

我用以下输入类型制作了游戏:

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

然后,以下类将处理您的控制器,并将输入转换为您自己的内部表示形式。

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