Added support for Playstation button names

This commit is contained in:
Ingo Ruhnke 2011-01-29 02:10:35 +01:00
parent e24980f2ec
commit 66576abb43
3 changed files with 41 additions and 69 deletions

2
NEWS
View file

@ -12,6 +12,8 @@ xboxdrv 0.7.1 - (??/???/2011)
* fixed assertion in relative axis filter
* fixed --dpad-as-button
* fixed --dpad-only
* added support for Playstation button names (triangle,
circle, square, cross, L1, L2, L3, R1, R2, R3)
xboxdrv 0.7.0 - (28/Jan/2011)

64
TODO
View file

@ -42,18 +42,20 @@ $ dput my-ppa ../xboxdrv_0.7.1-1~lucid1_source.changes
Stuff to do before 0.7.1 release:
=================================
* implement set_dpad_as_button(), set_dpad_only()
* add option to increase libusb debug level
* --name DEVNAME must work with multple controller slots and multiple
devices, also allow a way to rename mouse and keyboard emulation devices
* document --device-name TYPE.SLOT=NAME, --name
turn --name into --ui-name SLOT=foo
* add --device-usbid TYPE.SLOT=VENDOR:PRODUCT:VERSION
--ui-name 1=MouseEmulation:0500:0500,2=Keyboard,mouse=Mouse
--ui-name 1=MouseEmulation,2=Keyboard,mouse=Mouse
--ui-vendor =
--ui-product
--ui-bcdversion
* fix device name of mimic_xpad
* boost::lexical_cast<> error messages are useless, make some better ones
* allow multiple controllers in non-daemon mode
* couldn't convert 'XK_Page_Up' to enum, not a member of X11Keysym
currenty code can't handle multple names for a single key
* document match rules
@ -64,38 +66,6 @@ Stuff to do before 0.7.1 release:
* update debian package description
* need magic to assign controller to a slot:
what: match product/vendor-id, match device name
where: match USB path, match /dev/input/??? path
when: just assign them to the next free slot
--match RULE,... # match any of the given rules
--match-group RULE,... # match all of the given rules
Rules:
======
usbpath=005:003 (implicit vendor/product match)
usbid=045f:028f
evdev=/dev/input/event5
(no rules means it always matches)
1) search for match
2) if no match is found search slots without rules
* matching by usbpath makes very little sense, as the dev argument
gets incremented with each replug, bus alone might be usable
* match again sysname could make sense, seems somewhat constant: "5-2"
Xbox1 controller results in "5-2.1", due to being really two devices
* redesign match rules and only use single argument? would make
match group more logical:
--match-group vendor=045f,product=028f
* fix bugs that pop up
* valgrind before release
* allow named sections in INI files (start numbering at 0 or 1?):
@ -107,17 +77,13 @@ Stuff to do before 0.7.1 release:
[controller3/config1/modifier]
[controller3/config2/modifier]
* support for Playstation button names maybe? cross, triangle, circle, square, R3, L3, ...?
* check how daemon reacts on suspend
- suspending the computer leads to LIBUSB_ERROR_IO, unplugging the
controller leads to LIBUSB_ERROR_OTHER
* remember controllers that couldn't be used when all slots where full
and use them when a slot got free
* figure out a good place to set the LEDs off when Xboxdrv is quit,
just doing it in the destructor causes trouble, as the usbdev might
be no longer usable (when controller got unplugged)
* implement --on-connect and --on-disconnect for the daemon
- maybe have a more general event interface that allows to run stuff
on configuration changes, controller plug-ins, etc. (notifiy area as example)
@ -127,6 +93,10 @@ Stuff to do before 0.7.1 release:
Stuff to do before 0.7.2 release:
=================================
* --match again sysname could make sense, seems somewhat constant:
"5-2" Xbox1 controller results in "5-2.1", due to being really two
devices, would help to now how exactly those are formed
* --four-way-restrictor for the dpad?
- keep whatever direction is pressed first, don't allow walking over diagonals?

View file

@ -1239,33 +1239,33 @@ XboxButton string2btn(const std::string& str_)
if (str == "start")
return XBOX_BTN_START;
else if (str == "guide")
else if (str == "guide" || str == "ps")
return XBOX_BTN_GUIDE;
else if (str == "back")
else if (str == "back" || str == "select")
return XBOX_BTN_BACK;
else if (str == "a" || str == "1" || str == "green")
else if (str == "a" || str == "1" || str == "green" || str == "cross")
return XBOX_BTN_A;
else if (str == "b" || str == "2" || str == "red")
else if (str == "b" || str == "2" || str == "red" || str == "circle")
return XBOX_BTN_B;
else if (str == "x" || str == "3" || str == "blue")
else if (str == "x" || str == "3" || str == "blue" || str == "square")
return XBOX_BTN_X;
else if (str == "y" || str == "4" || str == "yellow")
else if (str == "y" || str == "4" || str == "yellow" || str == "triangle")
return XBOX_BTN_Y;
else if (str == "lb" || str == "5" || str == "orange" || str == "white")
else if (str == "lb" || str == "5" || str == "orange" || str == "white" || str == "l1")
return XBOX_BTN_LB;
else if (str == "rb" || str == "6" || str == "black")
else if (str == "rb" || str == "6" || str == "black" || str == "r1")
return XBOX_BTN_RB;
else if (str == "lt" || str == "7")
else if (str == "lt" || str == "7" || str == "l2")
return XBOX_BTN_LT;
else if (str == "rt" || str == "8")
else if (str == "rt" || str == "8" || str == "r2")
return XBOX_BTN_RT;
else if (str == "tl")
else if (str == "tl" || str == "l3")
return XBOX_BTN_THUMB_L;
else if (str == "tr")
else if (str == "tr" || str == "r3")
return XBOX_BTN_THUMB_R;
else if (str == "du" || str == "up")
@ -1294,9 +1294,9 @@ XboxAxis string2axis(const std::string& str_)
else if (str == "y2" || str == "tilt")
return XBOX_AXIS_Y2;
else if (str == "lt")
else if (str == "lt" || str == "l2")
return XBOX_AXIS_LT;
else if (str == "rt")
else if (str == "rt" || str == "r2")
return XBOX_AXIS_RT;
else if (str == "dpad_x")
@ -1307,24 +1307,24 @@ XboxAxis string2axis(const std::string& str_)
else if (str == "trigger" || str == "z" || str == "rudder")
return XBOX_AXIS_TRIGGER;
else if (str == "btn_a")
else if (str == "btn_a" || str == "cross")
return XBOX_AXIS_A;
else if (str == "btn_b")
else if (str == "btn_b" || str == "circle")
return XBOX_AXIS_B;
else if (str == "btn_x")
else if (str == "btn_x" || str == "square")
return XBOX_AXIS_X;
else if (str == "btn_y")
else if (str == "btn_y" || str == "triangle")
return XBOX_AXIS_Y;
else if (str == "black")
return XBOX_AXIS_BLACK;
else if (str == "white")
else if (str == "white" || str == "lb"|| str == "l1")
return XBOX_AXIS_WHITE;
else if (str == "black" || str == "rb" || str == "r1")
return XBOX_AXIS_BLACK;
else
return XBOX_AXIS_UNKNOWN;
}