Game controller
Hardware
The game controller of an XO laptop is a D-pad or rocker at the lower left corner of the display and a set of four action buttons at the lower right; therefore a total of four buttons for user activation. Beneath the rocker are four switches on the system board. More switches are beneath the action buttons. Traces on the board connect the switches to the embedded controller. The rocker can activate the underlying switches, one, two, three or four together depending upon how it is tilted. Not all combinations are possible. For example, if the upper and lower switches are closed, then at least one of the left and right switches is closed. The action buttons operate similarly but allow any combination of the underlying switches to be closed simultaneously. Some of the combinations provide "cheat codes" when the machine is powered up.
X Events
The Linux xev command may be used to show events produced when a switch is closed or opened. Switch closure is reported as a KeyPress event; switch opening as a KeyRelease event. Events generated by the embedded controller are typical of the keypad of a conventional computer keyboard. The rocker produces KP_Up, KP_Right, KP_Down, KP_Left. The right buttons produce KP_Prior, KP_End, KP_Next and KP_Home. Keycodes and keysyms are also available from xev, pygame, and GTK+.
Design History; Suggestions and Considerations
Left Side (Directional Pad/Joystick)
The left should include a directional pad or joystick to use in pointing or directional manipulation.
In order of preference we should include:
1. A circular "rocker" on top of four contacts but made of a single piece of plastic that allows for easy 8-way directional pointing.
2. In the interests of space, the 4-way directional pad could be replaced with a short joystick. We'd like to avoid the clunkiness and fragility of most cellphone joysticks. A good example of a gaming joystick would be in either the GP2X, the GP32 (an earlier version of the GP2X) or the controller on the NeoGeo. For examples, see the first three examples in the photos section below.
3. A Sony Playstation-like 4-way directional-pad with single piece of plastic but exposed or shaped into 4 roughly distinct buttons and shaped to allow pointing in diagonals (see the Playstation controller or Nintendo controller for examples).
Right Side (Buttons)
Since there is additional room on the right side, we should take advantage of this and include 4 buttons. The ideal layout would be in a diamond shape so it could be used a more traditional four-way directional pad if necessary.
If two buttons are used instead of three, they should be distinct buttons and placed an angle from each other with the right button above the left. A third extra button offset either above or below would be useful.
We do not recommend using a 4 directional rocker "dpad" on the right hand side. There are several reasons for this. First, because there is a well-established convention to lay out separate buttons on the right hand side, as evidenced by numerous controller illustrations below. Second, naming the controls becomes difficult. For example, instructing someone to "press down" becomes ambiguous - did you mean down on the left rocker, or down on the right rocker? Third, many games utilize multiple button combinations on the right hand side wich are difficult..
Other game controllers
Reviews and Overviews
- History of video game controllers and their relationships to each other (highly recommended)
Examples and Pictures
http://www.ossblog.it/uploads/gp2x_2.jpg
http://www.retro-games.co.uk/neogeo/hngp_bluesys.gif
http://gruson.guillaume.free.fr/images/Consoles/neogeo-pocket.gif
http://www.retro-games.co.uk/neogeo/hngp_bw.jpg
http://www.viewonline.com/pages/articles/images/messiahcontrollers.jpg
http://www.axess.com/twilight/console/detail/vb.jpg
http://www.hartware.de/media/reviews/322/gp32.jpg
http://www.gamestech.com/playstation2_info/controller/PSX2_Neo_Geo_Stick_2/neo2.jpg
http://epsilon.media.mit.edu/~mako/controllers/psp.jpg
http://epsilon.media.mit.edu/~mako/controllers/Nintendo_ds_bg_2.png
http://epsilon.media.mit.edu/~mako/controllers/211219.jpg
http://epsilon.media.mit.edu/~mako/controllers/retropad1_large.jpg
http://www.circuitcity.com/IMAGE/product/detail/nin/PC.NIN.DOLACK2.LT.JPG
http://epsilon.media.mit.edu/~mako/controllers/controllers-ps3.jpg
http://epsilon.media.mit.edu/~mako/controllers/controller_s1.jpg
http://www.retrousb.com/images/neogeo1_med.jpg
http://www.seganet.com.br/images/full_dreamcast_controller.gif
http://z.about.com/d/vgstrategies/1/0/Y/ps2controller.jpg
http://media.arstechnica.com/staff/fatbits.media/n64-controller.jpg