joystick button events sent too many times

Bug #110911 reported by jtolds
6
Affects Status Importance Assigned to Milestone
Ubuntu
New
Undecided
Unassigned

Bug Description

I have the following code snippet that no longer works as it did previously:
struct js_event js; int jsfd = -1;
if((jsfd = open("/dev/input/js0",O_RDONLY)) != -1){
  while(1) {
    if(read(jsfd,&js,sizeof(struct js_event)) == sizeof(struct js_event)) {
      if (js.type==JS_EVENT_BUTTON) {
        if(js.value == 1) printf("button press\n");
        if(js.value == 0) printf("button released\n");
      }
    }
  }
}
This used to print one press/release pair for each button press, but now it prints many.
I have a USB joystick, specifically, the EMS PS2 to USB adapter (http://www.hkems.com/product/ps2/ps2-usb2.htm), which was working fine before the upgrade from Edgy to Feisty.
I've found perhaps related information at Kerneltrap here: http://kerneltrap.org/node/2199 (check the comments, people seem to be having trouble) which was referenced by a LinuxQuestions comment here: http://www.linuxquestions.org/questions/showthread.php?p=2725764

Revision history for this message
jtolds (jtolds) wrote :

A better description is provided by Paul Zaremba at Kerneltrap: http://kerneltrap.org/node/2199#comment-230816
His comment:
I have an EMS USB II (two port PS2->USB converter, usb id 0b43:0003) that worked perfectly a few months ago. Ever since I upgraded to Ubuntu Feisty with kernel 2.6.20-15 it is detected as a 4 axis 16 button joystick instead of an 8 axis 32 button joystick. It appears the dual ports are sharing the axes and buttons. Of course, this makes the device useless since the axis/button status are constantly changing according to /dev/input/js0.

Revision history for this message
Klump (raino-priha) wrote :

About the same thing is happening with my Saitek X45 HOTAS. When I upgraded from Edgy to Feisty only 16 buttons are detected and the state for button 1 stays on only if I press buttons 1 and 17 at the same time. Buttons 17-26 are now mapped on top of the first 10 buttons. All 6 axis and POV-hat work normally. Seems like support for more than 16 buttons on a joystick is broken in Feisty.

Revision history for this message
Matthieu T. (bluerabbit) wrote :
Download full text (3.9 KiB)

Confirmed with the Saitek X52 joystick : jstest returns the following when holding pressed button 9 :

Event: type 1, time 1631100, number 7, value 0
Event: type 1, time 1631100, number 9, value 1
Event: type 1, time 1631100, number 7, value 1
Event: type 1, time 1631100, number 9, value 0
Event: type 1, time 1631116, number 7, value 0
Event: type 1, time 1631116, number 9, value 1
Event: type 1, time 1631116, number 7, value 1
Event: type 1, time 1631116, number 9, value 0
Event: type 1, time 1631140, number 7, value 0
Event: type 1, time 1631140, number 9, value 1
Event: type 1, time 1631140, number 7, value 1
Event: type 1, time 1631140, number 9, value 0
Event: type 1, time 1631156, number 7, value 0
Event: type 1, time 1631156, number 7, value 1
Event: type 1, time 1639844, number 7, value 0
Event: type 1, time 1639844, number 9, value 1
Event: type 1, time 1639844, number 7, value 1
Event: type 1, time 1639844, number 9, value 0
Event: type 1, time 1639860, number 7, value 0
Event: type 1, time 1639860, number 9, value 1
Event: type 1, time 1639860, number 7, value 1
Event: type 1, time 1639860, number 9, value 0
Event: type 1, time 1639884, number 7, value 0
Event: type 1, time 1639884, number 9, value 1
Event: type 1, time 1639884, number 7, value 1
Event: type 1, time 1639884, number 9, value 0
Event: type 1, time 1639900, number 7, value 0
Event: type 1, time 1639900, number 9, value 1
Event: type 1, time 1639900, number 7, value 1
Event: type 1, time 1639900, number 9, value 0
Event: type 1, time 1639924, number 7, value 0
Event: type 1, time 1639924, number 9, value 1
Event: type 1, time 1639924, number 7, value 1
Event: type 1, time 1639924, number 9, value 0
Event: type 1, time 1639948, number 7, value 0
Event: type 1, time 1639948, number 9, value 1
Event: type 1, time 1639948, number 7, value 1
Event: type 1, time 1639948, number 9, value 0
Event: type 1, time 1639964, number 7, value 0
Event: type 1, time 1639964, number 9, value 1
Event: type 1, time 1639964, number 7, value 1
Event: type 1, time 1639964, number 9, value 0
Event: type 1, time 1639988, number 7, value 0
Event: type 1, time 1639988, number 9, value 1
Event: type 1, time 1639988, number 7, value 1
Event: type 1, time 1639988, number 9, value 0
Event: type 1, time 1640004, number 7, value 0
Event: type 1, time 1640004, number 9, value 1
Event: type 1, time 1640004, number 7, value 1
Event: type 1, time 1640004, number 9, value 0
Event: type 1, time 1640028, number 7, value 0
Event: type 1, time 1640028, number 9, value 1
Event: type 1, time 1640028, number 7, value 1
Event: type 1, time 1640028, number 9, value 0
Event: type 1, time 1640044, number 7, value 0
Event: type 1, time 1640044, number 9, value 1
Event: type 1, time 1640044, number 7, value 1
Event: type 1, time 1640044, number 9, value 0
Event: type 1, time 1640068, number 7, value 0
Event: type 1, time 1640068, number 9, value 1
Event: type 1, time 1640068, number 7, value 1
Event: type 1, time 1640068, number 9, value 0
Event: type 1, time 1640092, number 7, value 0
Event: type 1, time 1640092, number 9, value 1
Event: type 1, time 1640092, number 7, value 1
Event: type 1, time 1640092, number 9, va...

Read more...

Revision history for this message
mmxbass (mmxbass) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.