Bug 21387 - Need to spec better support for control mapping
Need to spec better support for control mapping
Status: NEW
Product: WebAppsWG
Classification: Unclassified
Component: Gamepad
unspecified
All All
: P2 normal
: ---
Assigned To: Ted Mielczarek [:ted]
public-webapps-bugzilla
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-03-25 12:27 UTC by Ted Mielczarek [:ted]
Modified: 2013-04-10 18:35 UTC (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ted Mielczarek [:ted] 2013-03-25 12:27:23 UTC
The spec text that talks about a "standard gamepad" layout is a good start, but I think we need to go a little farther. We should spec a way for implementations to provide mapping data for known controllers as well as for content to fill in mappings for devices that the implementation doesn't know about.

There are two things content will want to know:
1) The mapping of controls to the physical layout of the controller. For example, most modern gamepads have a left analog stick that's the natural control for movement, and a set of buttons that are naturally under the right thumb when holding the controller. Content should be able to locate those to map them to actions.
2) The naming of controls on the actual gamepad. This is important for providing feedback to a user, content will want to be able to say "Press A".

Scott has a JS library he wrote that provides this:
https://github.com/sgraham/gamepad.js/

I've also started sketching some thoughts in data form of what a useful presentation of controller data might look like:
https://github.com/luser/gamepad-data
Comment 1 Ted Mielczarek [:ted] 2013-03-25 14:27:14 UTC
To take Scott's "standard gamepad" layout a little further, I drew a diagram:
http://people.mozilla.com/~tmielczarek/gamepad.svg

This is what the data in my gamepad-data github repo is based on.
Comment 2 Ted Mielczarek [:ted] 2013-03-26 12:20:52 UTC
After thinking about this quite a bit, I think this might be too much to bite off for an initial rev of the spec. I think what I'd like to do is take the "standard gamepad" approach and just polish it a little bit:
1) Add a Gamepad.mapping field, which can be set to "standard" or something if the implementation is using the standard gamepad mapping.
2) Add a way for the implementation to provide control names.

This should be enough to be useful, and we can do something more ambitious in a later version of the spec.
Comment 3 Ted Mielczarek [:ted] 2013-04-10 18:35:30 UTC
I added Gamepad.mapping to the spec:
https://dvcs.w3.org/hg/gamepad/rev/c5c7b4651d4e

I'd still like to figure out how to expose control names to content, since I think that's really useful.