Gamepad layout database?

Gamepad layout database?

Postby devnewton » 03 Jul 2013, 08:23

I added gamepad automatic configuration to my game: when a known gamepad is detected, axis and buttons are automatically mapped to game controls.

Problem, I only have one gamepad model support, mine :-(

Is there an existing gamepad layout database that store layout? Basically, I want to know what are the left/right/up/down axis and the L/R/A button codes like on most console pad.

I saw that SDL2 will define an "ideal gamepad". I wonder how this will work?
devnewton
 
Posts: 78
Joined: 25 Sep 2012, 13:21

Re: Gamepad layout database?

Postby Julius » 03 Jul 2013, 15:00

Definitly try to make it Xbox360 pad compatible, as that is emerging as the defacto standard at least under windows.
“You never change things by fighting the existing reality. To change something, build a new model that makes the existing model obsolete” - Buckminster Fuller
User avatar
Julius
Community Moderator
 
Posts: 2172
Joined: 06 Dec 2009, 14:02

Re: Gamepad layout database?

Postby qubodup » 03 Jul 2013, 15:16

I'm afraid the only source of this information that I know of is at http://wordwarvi.sourceforge.net/#gamepads

The button and axis numbers might be set by the driver, so it might differ between versions and operating systems.
User avatar
qubodup
Global Moderator
 
Posts: 1671
Joined: 08 Nov 2009, 22:52
Location: Berlin, Germany

Re: Gamepad layout database?

Postby devnewton » 03 Jul 2013, 15:32

Thank you all,

Since this does not exists, I will post configuration of every gamepad I find on my website following the SDL string format: http://devnewton.bci.im/en/gamepad_db

Feel free to contribute!
devnewton
 
Posts: 78
Joined: 25 Sep 2012, 13:21

Re: Gamepad layout database?

Postby qubodup » 03 Jul 2013, 23:26

I own a Techsolo TG-30 Gamepad and a 2-Tech SNES Style Gamepad, check them out in this blog post of mine. I'd be glad to contribute. We can also use the http://wiki.freegamedev.net for this.

I don't understand how to contribute though? Post here? Write a comment?

Can you clarify the format and how to get the numbers? What command line(?) tools did you use?

Could you please clean up your contribution by formatting it nicer, perhaps in a common, usable format, and without the IRC specific text?
User avatar
qubodup
Global Moderator
 
Posts: 1671
Joined: 08 Nov 2009, 22:52
Location: Berlin, Germany

Re: Gamepad layout database?

Postby devnewton » 04 Jul 2013, 15:58

I added instructions to explain how to contribute. Tell me if it's still confusing (english is not my first language).

http://devnewton.bci.im/en/gamepad_db

I also added a json export.
devnewton
 
Posts: 78
Joined: 25 Sep 2012, 13:21

Re: Gamepad layout database?

Postby qubodup » 04 Jul 2013, 23:03

I feel uncomfortable using the chat, so I'll post it here. I also couldn't figure out the format you request, so I just wrote the information, as displayed by jstest-gtk inside the photos.

Techsolo TG-30
{l Code}: {l Select All Code}
[ 1383.257658] usb 6-1: new full-speed USB device number 2 using ohci_hcd
[ 1383.497982] input: USB GAMEPAD 8116 as /devices/pci0000:00/0000:00:13.1/usb6/6-1/6-1:1.0/input/input14
[ 1383.498209] acrux 0003:1A34:0802.0002: input,hidraw1: USB HID v1.00 Joystick [USB GAMEPAD 8116] on usb-0000:00:13.1-1/input0
[ 1383.498227] acrux 0003:1A34:0802.0002: Force Feedback for ACRUX game controllers by Sergei Kolzun <x0r@dv-life.ru>


It seems that there is force feedback. WordWarVi would identify it when given the right event device, but nothing would happen. The driver might be implementing a dummy or the device might be broken. As far as I remember, there was no mention of rumble in the product description.

Image

The MODE (x) button switches off and on the blue light. When plugged in, it's turned on (default state). Pressing it doesn't trigger a reaction by jstest or jstest-gtk. It changes the behavior of some controls as seen below:

Image

The TURBO (y) button doesn't seem to have a noticeable effect.

Neither MODE nor TURBO create dmesg output.

The shoulder triggers both occupy one axis, which seems like a design flaw to me. The xbox360 controller (driver) treats them individually.

2-Tech SNES Style Gamepad
{l Code}: {l Select All Code}
[ 5494.728711] usb 5-3: new low-speed USB device number 4 using ohci_hcd
[ 5494.936564] input: USB Gamepad  as /devices/pci0000:00/0000:00:13.0/usb5/5-3/5-3:1.0/input/input20
[ 5494.936878] dragonrise 0003:0079:0011.0006: input,hidraw1: USB HID v1.10 Joystick [USB Gamepad ] on usb-0000:00:13.0-3/input0


Image

Hope this helps!
User avatar
qubodup
Global Moderator
 
Posts: 1671
Joined: 08 Nov 2009, 22:52
Location: Berlin, Germany

Re: Gamepad layout database?

Postby CruzR » 04 Jul 2013, 23:53

I had the same idea some time ago, so I searched the interwebs and stumbled upon this site:

http://www.nathancoulson.com/proj_conndb.php

I didn't really pursue the idea any further, but some of the information on that site might be valuable to you, especially the bit about the Xbox 360 gamepad having a different amount of axes and buttons on different OSes. So you might in fact have to collect the information for your database separately for each OS if you intend it to work cross-platform.

Anyway, here are some other random thoughts, questions and suggestions:
  • Is the Afterglow PS3 Controller not a USB device? I'm asking that because the uuid does not follow the HID:Vendor:Product convention.
  • Since probably all USB game controllers out there are HID class devices, is the 0003: prefix really necessary?
  • I'd suggest that you manage your database in an actual database (sqlite comes to my mind) if you do not do that already.
  • A RESTful API would be pretty cool. It should atleast support querying the configuration for a single uuid only and maybe even directly pushing new configurations to the database (even though you might want to require authentication for the second one).
  • To build up on the previous two points, you could add a statistics table to your database. This would e.g. make it possibly to offer an API request that returns configurations for the n most popular gamepads so that developers can cache these locally.
  • I'd be interested in helping to develop the API, if you want.
  • The current configuration assumes a controller with a Xbox-like layout. It might prove helpful to provide a bit more abstraction, e.g. instead of (or in addtion to) assigning virtual button names ('a', 'b', x', 'y', ...) to buttons, assign actions to buttons ('accept', 'cancel', 'fire', ...), with possibly several actions assigned to the same button depending on the context. This would allow the best user experience even for gamepads that do not match the Xbox 360 layout.
  • It would be pretty cool if you could include SVG images of the most common controller layouts into your database (for ingame configuration screens).
  • It might be interesting to keep an eye on the W3C gamepad specification (http://www.w3.org/TR/gamepad/) if you plan to make your database HTML5 compatible.
CruzR
 
Posts: 9
Joined: 15 Apr 2013, 15:53

Re: Gamepad layout database?

Postby devnewton » 05 Jul 2013, 10:38

Actually, your website give me the idea!

I manage this base by hand for know, because my goal is to complete Newton Adventure first, but a real website with a real database and a REST API would be very cool.

Once the W3C gamepad spec will be implemented by web browsers, it will be possible to write an interactive graphic HTML5 application to fill the database.

About uuid, I dont know much about it: I took the data from SDL2 header...
devnewton
 
Posts: 78
Joined: 25 Sep 2012, 13:21

Re: Gamepad layout database?

Postby devnewton » 05 Jul 2013, 10:41

qubodup< what are the names of your gamepads displayed in jstest-gtk?
devnewton
 
Posts: 78
Joined: 25 Sep 2012, 13:21

Re: Gamepad layout database?

Postby qubodup » 05 Jul 2013, 12:03

devnewton {l Wrote}:qubodup< what are the names of your gamepads displayed in jstest-gtk?

USB GAMEPAD 8116
and
USB Gamepad

Just like in the input: lines of dmesg.

If it's helpful, I can open up the controller and take photos of the chips inside in a week. :)
User avatar
qubodup
Global Moderator
 
Posts: 1671
Joined: 08 Nov 2009, 22:52
Location: Berlin, Germany

Re: Gamepad layout database?

Postby beoran » 05 Jul 2013, 19:03

I have two game devices:

The Saitek P220 identifies itself as 0003:06A3:0107.0008 [SAITEK P220] and has only 1 joystick cross and it's digital. It does have an a rather useless analog throttle in the middle. It has 6 buttons on the right. It only has 2 shoulder buttons, not triggers.
Image

The second one is a Speedlink Strike², but it identifies itself as a "Greenasia" device 0003:0E8F:0012.0009,[GreenAsia Inc. USB Joystick ]:
It's pretty much a clone of a PS/2 conroller with some extra turbo features, but it's rather nice. The Speedlink (greenasia device) supports force feedback on linux.
Image


If dmesg says your joystick has force feedback, then it should have! Use fftest to check it out, you may be surprised like I was. Linux already supports force feedback for years, just that SDL didn't support it until recently.

Finally, I think the idea of an "ideal" gaming device isn't feasible, since there is too much variation. Rather, we should keep in the DB the position and function of the available buttons and axis.
beoran
 
Posts: 35
Joined: 03 Feb 2013, 22:27

Re: Gamepad layout database?

Postby qubodup » 06 Jul 2013, 00:40

beoran {l Wrote}:If dmesg says your joystick has force feedback, then it should have! Use fftest to check it out, you may be surprised like I was. Linux already supports force feedback for years, just that SDL didn't support it until recently.


Thanks for the hint! I tested it with the Techsolo TG-30. However, the output was:
{l Code}: {l Select All Code}
$ fftest /dev/input/event4
Force feedback test program.
HOLD FIRMLY YOUR WHEEL OR JOYSTICK TO PREVENT DAMAGES

Device /dev/input/event4 opened
Axes query:
Effects: Periodic Rumble
Number of simultaneous effects: 16
Upload effects[1]: Invalid argument
Upload effects[2]: Invalid argument
Upload effects[3]: Invalid argument
Enter effect number, -1 to exit


User owns the device file and it is the correct device. Here's the xorg log output by the way:
{l Code}: {l Select All Code}
[ 29633.815] (II) config/udev: Adding input device USB GAMEPAD 8116 (/dev/input/event4)
[ 29633.903] (**) USB GAMEPAD 8116: Applying InputClass "joystick catchall"
[ 29633.925] (II) Using input driver 'joystick' for 'USB GAMEPAD 8116'
[ 29633.926] (**) USB GAMEPAD 8116: always reports core events
[ 29633.926] (**) USB GAMEPAD 8116 (keys): Applying InputClass "joystick catchall"
[ 29633.926] (II) Using input driver 'joystick' for 'USB GAMEPAD 8116 (keys)'
[ 29633.926] (**) USB GAMEPAD 8116 (keys): always reports core events
[ 29633.940] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:13.1/usb4/4-1/4-1:1.0/input/input15/event4"
[ 29633.940] (II) XINPUT: Adding extended input device "USB GAMEPAD 8116 (keys)" (type: JOYSTICK, id 10)
[ 29633.950] (**) Option "Device" "/dev/input/event4"
[ 29633.950] (**) Option "StartMouseEnabled" "False"
[ 29633.950] (**) Option "StartKeysEnabled" "False"
[ 29633.950] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:13.1/usb4/4-1/4-1:1.0/input/input15/event4"
[ 29633.950] (II) XINPUT: Adding extended input device "USB GAMEPAD 8116" (type: JOYSTICK, id 11)
[ 29633.950] (II) Joystick: USB GAMEPAD 8116. bus 0x3 vendor 0x1a34 product 0x802 version 0x100
[ 29633.950] (II) Joystick: found 7 axes, 10 buttons
[ 29633.954] JOYSTICK: DebugLevel set to 0
[ 29633.954] (**) USB GAMEPAD 8116: (accel) keeping acceleration scheme 1
[ 29633.954] (**) USB GAMEPAD 8116: (accel) acceleration profile 0
[ 29633.954] (**) USB GAMEPAD 8116: (accel) acceleration factor: 2.000
[ 29633.954] (**) USB GAMEPAD 8116: (accel) acceleration threshold: 4
[ 29633.958] (II) config/udev: Adding input device USB GAMEPAD 8116 (/dev/input/js0)
[ 29633.958] (II) No input driver specified, ignoring this device.
[ 29633.958] (II) This device may have been added with another device file.
User avatar
qubodup
Global Moderator
 
Posts: 1671
Joined: 08 Nov 2009, 22:52
Location: Berlin, Germany

Re: Gamepad layout database?

Postby devnewton » 06 Jul 2013, 11:10

Thank contributing people ! I know have 6 gamepad in the database. Just one million more and it will be complete :-)

Finally, I think the idea of an "ideal" gaming device isn't feasible, since there is too much variation.


A perfect mapping is impossible, my goal is to get a good one for most gamepad.

Rather, we should keep in the DB the position and function of the available buttons and axis.


What do you mean by "position and function"?
devnewton
 
Posts: 78
Joined: 25 Sep 2012, 13:21

Re: Gamepad layout database?

Postby hc » 06 Jul 2013, 12:18

Not directly related to the database but important and related:
Just like to add that the w3c definition of buttons as having float values is the right way - defined the gamedpad in linwarrior that way too btw after thinking about analog shoulder buttons which triggers and the like are
Ie just having analogous axes and binary axes isn't generic enough.
Which ultimatly leads to what qubodup reported about mismapping two triggers on x and y axes.

There are things like pressure sensitive 'buttons' btw.
The ps2 R1/R2 are really pressure sensitive sensors/buttons.
Which were replaced in the ps3 with trigger style sensors.
IMHO triggers and pedals are more like sensitive buttons and not navigational controlls.
Common binary buttons are just the special case of a 1D input.
github.com/hackcraft-de
hackcraft.de
User avatar
hc
LW3D Moderator
 
Posts: 213
Joined: 07 Feb 2011, 10:00
Location: far away

Re: Gamepad layout database?

Postby beoran » 06 Jul 2013, 12:59

qubodup {l Wrote}:Thanks for the hint! I tested it with the Techsolo TG-30. However, the output was:
{l Code}: {l Select All Code}
$ fftest /dev/input/event4
Force feedback test program.
HOLD FIRMLY YOUR WHEEL OR JOYSTICK TO PREVENT DAMAGES

Device /dev/input/event4 opened
Axes query:
Effects: Periodic Rumble
Number of simultaneous effects: 16
Upload effects[1]: Invalid argument
Upload effects[2]: Invalid argument
Upload effects[3]: Invalid argument
Enter effect number, -1 to exit



Yes, that's excellent, it means your Techsolo supports force feedback! Now type 4 ENTER or 5 ENTER.
Your joystick will rumble, so hold it down well!

An "idealized" game pad (why X-box, by the way, I prefer PS/3 myself) wouldn't work very well for a racing game where you need a steering wheel, or for a flight simulator where you need real joysticks. Every game has to be able to decide what to do with what button or axis. And yes, I agree buttons may be analog too, but they need not be. Whether an axis or button is analog or digital needs to be described in the database as well.

As for "position and function", I mean just that. A button can in general, on a joystick or game pad, be located in several places, namely on the right hand side of a pad, on the middel of the pad, on the left of the pad, on the "right shoulder" of the pad, on the "left shoulder" of the pad, and for joystics, under the thumb-side of the stick, under the trigger of the stick, or on the left or right sde of the base of the stick. In an arcade stick, uttons would be mostly to the left of the stick, exept for "start buttons" which tend to be above the arcade stick. Same for the sticks, we have classic joysticks, steering wheels, throttles, digital + pads, analog mini-joysticks or thumbsticks (like on a PS2/PS3 controller), and hats, which are small digital + pads on top of a Joystick. so yes, the database that I'm thinking of is more complex, but I think it would be more useful as well.

But actually, I think to begin this database, we don't need to own all these joysticks. We can start by looking in the Linux kernel sources for all supported game-input devices, and then correlate those with photos we can find on the internet. Often, the button and axis numbers correspond pretty well to what you'd expect, from the layout of the joy pad or joystick.
I 'll try to come up with an idea for what we need for such a detailed database.
beoran
 
Posts: 35
Joined: 03 Feb 2013, 22:27

Re: Gamepad layout database?

Postby devnewton » 06 Jul 2013, 13:14

I 'll try to come up with an idea for what we need for such a detailed database.


Maybe a graphical database with pictures and indication of button/axis indexes. http://xpadder.com/gcdb.php has already images :-)
devnewton
 
Posts: 78
Joined: 25 Sep 2012, 13:21

Re: Gamepad layout database?

Postby beoran » 06 Jul 2013, 14:34

Well, an example of one device in such a full database. I used (tag-less) XML not because I like it but because it's easy to express my intent. Perhaps JSON will be better, though:

{l Code}: {l Select All Code}

<database>
  <device>
    <id>d1</id>
    <name>Speedlink Strike²</name>
    <model>SL-6535-SSV</model>
    <kind>gamepad</kind>
    <image>speedlink_strike_2.jpg</image>
    <drawing>speedlink_strike_2.png</drawing>
    <os>
      <linux>
        <uuid>0003:0E8F:0012.0009</uuid>
        <name>GreenAsia Inc.      USB  Joystick  </name>
      </linux>
    </os>
    <elements>
      <element><id>e1</id><kind>thumbstick</kind><mode>analog</mode>
        <position>left</position>
      </element>
      <element><id>e2</id><kind>thumbstick</kind><mode>analog</mode>
        <position>right</position>
      </element>
      <element><id>e3</id><kind>8 direction cross</kind><mode>digital</mode>
        <position>left</position>
      </element>
      <element><id>e4</id><kind>buttongroup</kind><mode>digtal</mode>
        <position>middle</position>
      </element>
      <element><id>e5</id><kind>shoulder</kind><mode>digtal</mode>
        <position>left</position>
      </element>
      <element><id>e6</id><kind>shoulder</kind><mode>digtal</mode>
        <position>right</position>
      </element>
      <element><id>e7</id><kind>buttongroup</kind><mode>digtal</mode>
        <position>right</position>
      </element>
    </elements>
    <axes>
      <axis><id>a1</id><os><linux><aid>0</aid></linux></os>
        <in_element>1</in_element><direction>x</direction>
      </axis>
      <axis><os><linux><aid>1</aid></linux></os>
        <in_element>1</in_element><direction>y</direction>
      </axis>
      <axis><os><linux><aid>2</aid></linux></os>
        <in_element>2</in_element><direction>x</direction>
      </axis>
      <axis><os><linux><aid>3</aid></linux></os>
        <in_element>2</in_element><direction>y</direction>
      </axis>
      <axis><os><linux><aid>4</aid></linux></os>
        <in_element>3</in_element><direction>x</direction>
      </axis>
      <axis><os><linux><aid>5</aid></linux></os>
        <in_element>3</in_element><direction>y</direction>
      </axis>
    </axes>
    <buttons>
      <button><id>b1</id><name>1</name><os><linux><bid>0</bid></linux></os>
        <in_element>e7</in_element>
      </button>
      <button><id>b2</id><name>2</name><os><linux><bid>1</bid></linux></os>
        <in_element>e7</in_element>
      </button>
      <button><id>b3</id><name>3</name><os><linux><bid>2</bid></linux></os>
        <in_element>e7</in_element>
      </button>
      <button><id>b4</id><name>4</name><os><linux><bid>3</bid></linux></os>
        <in_element>e7</in_element>
      </button>
      <button><id>b5</id><name>L1</name><os><linux><bid>4</bid></linux></os>
        <in_element>e5</in_element>
      </button>
      <button><id>b6</id><name>R1</name><os><linux><bid>5</bid></linux></os>
        <in_element>e6</in_element>
      </button>
      <button><id>b7</id><name>L2</name><os><linux><bid>6</bid></linux></os>
        <in_element>e5</in_element>
      </button>
      <button><id>b8</id><name>R2</name><os><linux><bid>7</bid></linux></os>
        <in_element>e6</in_element>
      </button>
      <button><id>b9</id><name>9</name><os><linux><bid>8</bid></linux></os>
        <in_element>e5</in_element>
      </button>
      <button><id>b10</id><name>10</name><os><linux><bid>9</bid></linux></os>
        <in_element>e4</in_element>
      </button>
      <!-- "Push down" Buttons in the thumbsticks -->
      <button><id>b11</id><name>L3</name><os><linux><bid>10</bid></linux></os>
        <in_element>e1</in_element>
      </button>
      <button><id>b12</id><name>R3</name><os><linux><bid>11</bid></linux></os>
        <in_element>e2</in_element>
      </button>
    </butons>
  </device>
</database>


Possible values for <device><kind>:

Gamepad
Paddle
Joystick
Arcade
Driving Control
Steering wheel
Pedals
Flight Control
Yoke
Throttle quadrant
Gameboard
Motion tracker
Light gun
Rhythm game controller
Pinball controller
Dance pad
Balance board
Buzzer
Twistpad
Mech controller
Floating interactive display
Mind controller
Bike controller
Optical motion tracker
Mechanical motion tracker
Exoskeleton controller
Instrument panel
Train control
Robotic control
Urinal control

Possible values for <element><kind>:
joystick
thumbstick
8 way cross
4 way cross
2 way switch
switch
buttongroup
shoulder
wheel
yoke
pedal
throttle
tracker
gun
...



I'll admit that it's quite a bit of work to collect all this data, though, seeing the huge amounts of different game devices out there and their wide differences.
beoran
 
Posts: 35
Joined: 03 Feb 2013, 22:27

Re: Gamepad layout database?

Postby devnewton » 06 Jul 2013, 17:20

How games could interpret this for autoconfiguration?
devnewton
 
Posts: 78
Joined: 25 Sep 2012, 13:21

Re: Gamepad layout database?

Postby beoran » 06 Jul 2013, 22:07

That will depend on the game. If a game needs at least one joystick, preferrably analog, and 6 buttons, then say , with the data above the game can infer that they player will most likely want to use the thumbstick e1 and the buttons on buttongroup e7 and e4. And the game can display the layout of the game pad via the drawing in the configuration screen.

In short, my idea is to collect the relevant data and let the programmers decide what to do with it. More information, and more flexibility. Of course, I'm open to adding or modifying fields in the proposed structure if that would be helpful.
beoran
 
Posts: 35
Joined: 03 Feb 2013, 22:27

Re: Gamepad layout database?

Postby hc » 07 Jul 2013, 14:50

Let me open a common use case for what a controller database has to be usable for:

As a developer I need to have accelleration on the lower thumb button and brake on the button on the upper left to that button so that it can be reached while still being with the thumb on the first button. If the user plugs in any gamepad then it's buttons indexes have to translate so that the button locations are still ergonomically/physically the same.

That isn't a problem if there is a unifiying mapping (draining from a database), like for the main button group:

MBL: this Button is the right hand left thumb button (Square-Button / Blue)
MBB: That Button is the right hand lower thumb button (Cross-Button / Green)
MBU: ... (Delta-Button / Yellow)
MBR: ... (Circle-Button / Red)

Without restriction to generality (or vendor) the important principle is this:
To give a button a unique Name (without implying any desired behavior like "action" or "cancel") which identifies the buttons location within a group of similar buttons and the group itself.
Where location is possibly a fuzzy thing given different controller types in general but given comman clone gamepads it is totally clear a 1:1 mapping.

And each controller button has to be able to be mapped to a common group+location.

For any Gamepad I need to be able to know which button number is say MBL (Main Button Left).
That mapping can then be used to map to an "ideal" or virtual gamepad.

Yes, the second best thing would be to at least know to which group a button number belongs to without knowing it's location within the group.
Ie. to know at least that buttons 12 13 14 15 are main buttons - but to only collect this data alone would be a wasted effort.

+1 for an online automatic test like:
"Please press the left thumb button now"


[ Edit:

For generality - like for sega like gamepads with 6 main buttons I would order them logically into columns left middle right, each having lower and upper thumb buttons.

As for Sticks, most important is the grouping left hand, middle and right hand because you just need to know which you can use them at the same time.
Say if a future gamepad would have two left sticks and one right then it would be stupid for a game to present the user with a layout that uses both left at the same time -
whereas it may be feasible if they are used in a game at different times - totally random example: Aim and fine aim or Move and fine move
For current gamepads this already arises with the left digital steering cross (d-pad) and the left stick.

For even more obfuscation: The d-pad is sometimes used for secondary main buttons, too and the primary main buttons as a right or secondary steering cross.
]
github.com/hackcraft-de
hackcraft.de
User avatar
hc
LW3D Moderator
 
Posts: 213
Joined: 07 Feb 2011, 10:00
Location: far away

Re: Gamepad layout database?

Postby hc » 07 Jul 2013, 16:12

For illustration and amusement I've pictured the extreme extended form of a generic (symmetric) virtual gamepad.
The point is, that same colored buttons of one group of buttons can be pressed/held at the same time by the same finger or thumb at the same time.
And then buttons are columns of buttons within the same group that can be pressed by moving that finger/thumb or by another finger.

I think shoulder buttons aren't yet at their evolution's end, at least again like with thumb buttons I can use one finger to hold down two horizontal buttons.
Here it's exaggerated to the possible limit of having two shoulder buttons on each finger.

One could imagine a spheric controller but I tried to illustrate it flat shaped like current controllers (with no demand for beauty).

Again the point is to have a gerneric abstract model of common game pads that can be extended and fullfills ergonomic constraints like:
These two buttons can be pressed at the same time with that finger while pressing others with another.
All the thumb buttons are usable spare wheel d-pads and vice versa (if necessary).

I didn't map any auxillary buttons like PS- or XBox-Buttons or centered devices like on the N64.
These are just auxillary (non game buttons) or deprecated or can be mapped to a symmetric device by duplicating (like two times another left+right stick).
And auxillary buttons are out of place anyway and I don't care where on a pad they really are considering gameplay.
As a side note: Really having a physical central stick really only limits the usability of a game pad (in the sense of just making a lot of buttons unreachable).

[Edit: I missed to display in the image that the analog sticks do have a button below them.]
Attachments
controller-generification.jpg
Virtual Gamepad with button groupings for individual thumbs and fingers - colored for holding ergonomic holdability constrains
controller-generification.svg
Virtual Gamepad with button groupings for individual thumbs and fingers - colored for holding ergonomic holdability constrains (source)
(24.18 KiB) Downloaded 379 times
github.com/hackcraft-de
hackcraft.de
User avatar
hc
LW3D Moderator
 
Posts: 213
Joined: 07 Feb 2011, 10:00
Location: far away

Re: Gamepad layout database?

Postby beoran » 08 Jul 2013, 16:22

hc, interesting ideas. I think it could be mixed with my idea and we could build an extensive database of input devices... but I have to admit I actually don't have time for this at all... :(
beoran
 
Posts: 35
Joined: 03 Feb 2013, 22:27

Re: Gamepad layout database?

Postby qubodup » 28 Jul 2013, 14:17

beoran {l Wrote}:Yes, that's excellent, it means your Techsolo supports force feedback! Now type 4 ENTER or 5 ENTER.
Your joystick will rumble, so hold it down well!

It actually works. 4 5 create different rumble effects. It seems to be weaker than the xbox360 controller.
User avatar
qubodup
Global Moderator
 
Posts: 1671
Joined: 08 Nov 2009, 22:52
Location: Berlin, Germany

Who is online

Users browsing this forum: No registered users and 0 guests