Ubuntu as a gaming platform: input devices support
Input devices (joysticks and gamepads), low-latency input and full button support for gaming mice and keyboards must work extremely well in Ubuntu
Blueprint information
- Status:
- Started
- Approver:
- Jason Warner
- Priority:
- Medium
- Drafter:
- Bryce Harrington
- Direction:
- Needs approval
- Assignee:
- Bryce Harrington
- Definition:
- Pending Approval
- Series goal:
- Accepted for raring
- Implementation:
- Blocked
- Milestone target:
- None
- Started by
- Bryce Harrington
- Completed by
Whiteboard
devices with high numbers of axes, we don't have a multiplexor so don't have a way for those to autoconfigure. For devices with small numbers of buttons and axes, assuming they're mapped reasonably they should "just work".
Two separate joysticks won't work, but two that are part of the same physical device might.
We have a few multiplexors in Ubuntu. It's possible to do it in the kernel driver.
Gamepads that don't use gyroscope controls should be straightforward to get quirked.
The joystick driver provides a more complete set of mappings than evdev and is what games focus on currently. However, evdev is the more standard solution for input on linux these days and so should have the additional joystick support added to it. libsdl exposes this same functionality but doesn't use either of these drivers.
xbox and ps3 type controllers are widely used. These should "just work", modulo unusual features like sliders.
jscal is a command line calibration tool. Idea would be to run this via a udev hook when device is first plugged in, store the calibration data, and then re-calibrate it as needed. Could include a GUI with a button to clear calibration and re-calibrate.
* Need to enumerate the axes required
* Need to support the full number of buttons
First Priority target: game controllers meant to plug into xbox/ps3 as standard controllers
Do games use straight kernel interface or XInput? Currently they listen directly to kernel. On Windows, joysticks are system settings.
Short term solution is to use a framework like sdl. Later when a proper evdev interface is available, sdl could be ported to use that.
Work Items
Work items:
[bryce] Need to evaluate various upstream multiplexer projects for more advanced joysticks: POSTPONED
[persia] Evaluate automatic joystick calibration upon plugging in a game controller (code around the jscal command line interface?): POSTPONED
[bryce] Investigate current experience of ps3/xbox style game controllers: POSTPONED
[persia] Spec out blueprint for EVDEV migration (with cnd): POSTPONED