Monday, January 31, 2011

xboxdrv 0.7.1 released

  • added --match-group
  • added --on-connect and --on-disconnect to xboxdrv --daemon
  • added --usb-debug
  • added --no-extra-events
  • added support for Playstation button names (triangle, circle, square, cross, L1, L2, L3, R1, R2, R3)
  • added ability to set LED per controller slot
  • added [controller0/config0/modifier] style sections to the ini file
  • added new match rules: usbserial=SERIAL, vendor=VENDOR, product=PRODUCT and property=PROPERTY:VALUE
  • added some example configurations to examples/
  • fixed issues with older libudev versions
  • fixed LED not getting switched off on shutdown
  • fixed some missing #include directives
  • fixed axis inversion issue in --axismap
  • fixed assertion in relative axis filter
  • fixed --dpad-as-button
  • fixed --dpad-only
  • fixed --mimic-xpad
  • fixed issue with using --trigger-as-zaxis in combination with axisfilter
  • man-page updates and cleanup
  • new version of runxboxdrv
Download: http://pingus.seul.org/~grumbel/xboxdrv/

10 comments:

Andreas said...

I really like your program and how easy it is to set up the basics. The more advnced settings confuse me a little though...
How would I go about to configure the guide key to send an ESC-keystrike if i hold it for two seconds?
And is it possible to make the driver run a command like "killall xbmc" if i hold down the L+R buttons and press start?
If you could help me out with this I would be really greatful.

Grumbel said...

ESC-keystrike after two seconds should be something like:

xboxdrv --ui-buttonmap guide=ESC:ESC+KEY_C:2000

Regular presses give you ESC, holding it ESC+KEY_C.

Second one would be:

xboxdrv --ui-buttonmap L+start=exec:killall_xbmc.sh

Xboxdrv currently can't handle "double shift" like L+R+start, only singl shift keys like L+start. Also exec can't take arguments, so we have to call a separate shell script.

Haven't tested those, so there might be typos.

Andreas said...

I think you misunderstood.
I want regular keystikes on the guide to do nothing and holding it ESC.

Grumbel said...

./xboxdrv --ui-buttonmap guide=key::KEY_ESC:2000

The "key:" prefix is needed as xboxdrv can't guess the event type when the first argument is empty.

Andreas said...

Thanks! Now I get it :-)
Now I just have to figure out how to load the driver before XBMC Live starts so I don't have to restart XBMC to use the controllers...

Andreas said...

I have another question for you about the driver. Whenever I use the driver with a wireless 360 pad the buttons often seem to "stick" and spam buttonpresses. Is there any way to fix this? I have never experienced this when I was using a wired controller.

Grumbel said...

That shouldn't happen, but I don't have a wireless controller myself, so there might be bugs, especially the switch to libusb-1.0 might have broken things. Try to see if you get better results with 0.6.6, if thats the case, let me know.

Andreas said...

I'll check more into the problems this weekend, but I'm actually leaning towards the problem being with XBMC and not your driver because most other programs I have tested it with, mainly emulators like Zsnes and FCEU, work just fine.

One thing I'm wondering about is if it's possible to somehow change the keymapping of an already launched session of xboxdrv as I start a certain program, zsnes for example, and have it revert to it's previous settings as I exit the program.

Grumbel said...

You can't change the settings when a program launches, but you can install multiple configurations and then toggle them with the guide button (or a button of your choice, see --toggle).

$ xboxdrv
--ui-buttonmap ...first config...
--next-config
--ui-buttonmap ...second config...

Andreas said...

Too bad. I was hoping to be able to write a script for an emulator that remaps the controller when I launch it and goes back to the standard mapping when I close it.
I could always kill the xboxdrv and launch it with a new mapping before launching the emulator and then doing the opposite when I quit the emulator, but unfortunately it seems like XBMC loses the pad if I do.