206 lines
6.1 KiB
Text
206 lines
6.1 KiB
Text
* examples for --dpad as buttons and other options
|
|
|
|
Figure out:
|
|
===========
|
|
Unknown data: bytes: 3 Data: 0x01 0x03 0x0e
|
|
Unknown data: bytes: 3 Data: 0x02 0x03 0x00
|
|
Unknown data: bytes: 3 Data: 0x03 0x03 0x03
|
|
Unknown data: bytes: 3 Data: 0x08 0x03 0x00
|
|
Unknown data: bytes: 3 Data: 0x01 0x03 0x00
|
|
|
|
Different Computer/Pad:
|
|
Unknown data: bytes: 3 Data: 0x01 0x03 0x0e
|
|
Unknown data: bytes: 3 Data: 0x02 0x03 0x00
|
|
Unknown data: bytes: 3 Data: 0x03 0x03 0x03
|
|
Unknown data: bytes: 3 Data: 0x08 0x03 0x00
|
|
Unknown data: bytes: 3 Data: 0x01 0x03 0x00
|
|
|
|
/* Happens with XBox360 Controller sometimes
|
|
Unknown data: bytes: 3 Data: 0x01 0x03 0x0e
|
|
Unknown data: bytes: 3 Data: 0x02 0x03 0x00
|
|
Unknown data: bytes: 3 Data: 0x03 0x03 0x03
|
|
Unknown data: bytes: 3 Data: 0x08 0x03 0x00
|
|
-- different session:
|
|
Unknown data: bytes: 3 Data: 0x01 0x03 0x0e
|
|
Unknown data: bytes: 3 Data: 0x02 0x03 0x00
|
|
Unknown data: bytes: 3 Data: 0x03 0x03 0x03
|
|
Unknown data: bytes: 3 Data: 0x08 0x03 0x00
|
|
Unknown data: bytes: 3 Data: 0x01 0x03 0x06
|
|
|
|
*/
|
|
|
|
|
|
// wire: { 0x00, 0x08, 0x00, large, small, 0x00, 0x00, 0x00 };
|
|
// wireless: { 0x00, 0x01, 0x0f, 0xc0, 0x00, large, small, 0x00, 0x00, 0x00, 0x00, 0x00};
|
|
^^^^ typo?
|
|
void Wireless360Controller::SetRumbleMotors(unsigned char large, unsigned char small)
|
|
{
|
|
char buf[] = {0x00, 0x01, 0x0f, 0xc0, 0x00, large, small, 0x00, 0x00, 0x00, 0x00, 0x00};
|
|
WirelessDevice *device;
|
|
|
|
device = OSDynamicCast(WirelessDevice, getProvider());
|
|
if (device != NULL)
|
|
device->SendPacket(buf, sizeof(buf));
|
|
}
|
|
|
|
|
|
-----
|
|
|
|
Tilt Sensor: is mapped to the second axis of S2, to LT and RT (three parts)
|
|
- Range for 2nd axis of S2 : -32768 when guitar is straight down and 32767 when she is straight up.
|
|
- Range for LT : ~200 not very precise and ~60 at min.
|
|
- Range for RT : ~190 not very precise and ~55 at min.
|
|
|
|
dummy should stay mostly 0, except the position five and six, which
|
|
are the LT/RT trigger. We can either just ignore them or you can try
|
|
to find out if they have any meaning.
|
|
|
|
|
|
They control guitar rotation, hmm hard to explain, it's when I rotate the guitar in front of me, it detects if the guitar is in the correct position.
|
|
-----
|
|
|
|
* add -type option to enforce controller type
|
|
|
|
* Question: Firestorm Dual Power: How to get rumble to work when there is no endpoint to send data to?
|
|
|
|
* allow selection of controller by usb path busNr,deviceNr
|
|
|
|
* Guitar Hero Controller:
|
|
- lsusb -v output looks like a XBox360 controller
|
|
- usbcat looks like an XBox360 controller
|
|
- it doesn't report events
|
|
|
|
http://forums.gentoo.org/viewtopic-p-5061825.html
|
|
http://gentoo-wiki.com/HOWTO_Xbox_360_controller_on_Linux
|
|
http://happypenguin.org/show?xboxdrv
|
|
http://ubuntuforums.org/showthread.php?t=404577&page=16
|
|
http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/OsxDriver
|
|
|
|
* add jstest, evtest into the source
|
|
|
|
|
|
WirelessHIDDevice::receivedMessage(IOMemoryDescriptor *data)
|
|
|
|
* wireless reports battery level
|
|
|
|
* disconnecting the pad in use will just let the driver wait forever
|
|
for new data, any way we can catch a disconnect?
|
|
|
|
* a way to configure the deadzone for axis (might be needed for some games)
|
|
|
|
* Add support for dancepad/mats (should just mean cleanup up the
|
|
buttons/axis not provided by the dancepad/mat)
|
|
|
|
New Command Line Options:
|
|
|
|
--button-map BTN
|
|
|
|
BTN is a list of integers, where each integer corresponds to the
|
|
event that gets send
|
|
|
|
A,B,X,Y,LB,RB,SL,SR,LT,RT,Start,Mode,Back,DPAD-UP,DPAD-DOWN,DPAD-LEFT,DPAD-RIGHT
|
|
A,B,X,Y,TL2,TR2,TL,TR,
|
|
|
|
#define BTN_A 0x130
|
|
#define BTN_B 0x131
|
|
#define BTN_C 0x132
|
|
#define BTN_X 0x133
|
|
#define BTN_Y 0x134
|
|
#define BTN_Z 0x135
|
|
#define BTN_TL 0x136
|
|
#define BTN_TR 0x137
|
|
#define BTN_TL2 0x138
|
|
#define BTN_TR2 0x139
|
|
#define BTN_SELECT 0x13a
|
|
#define BTN_START 0x13b
|
|
#define BTN_MODE 0x13c
|
|
#define BTN_THUMBL 0x13d
|
|
#define BTN_THUMBR 0x13e
|
|
|
|
--dpad-first
|
|
Dpad becomes first and second axis, instead of last, useful for 2D
|
|
jump'n run
|
|
|
|
--stick2-as-throttle
|
|
Makes the second stick act as throttle control
|
|
|
|
* add support to remap keys
|
|
|
|
* allow mouse emulation
|
|
|
|
* allow swapping of dpad and analog axis, so that dpad is first instead of last
|
|
|
|
* merge this thing with Pingus Input handling to get a very flexible framework?
|
|
|
|
* ...
|
|
|
|
Use cases:
|
|
==========
|
|
* flightsim:
|
|
expects: X/Y Rudder Throttle
|
|
XBox: Left-Stick LT+RT Right-Stick(rel)
|
|
|
|
* FPS:
|
|
expects: Mouse-X/Y Walk-X/Y Trigger
|
|
XBox: Left-Stick RickStick Trigger(btn)
|
|
|
|
* 2D Jump Run
|
|
needs dpad first
|
|
|
|
Needed features:
|
|
================
|
|
* stick to mouse
|
|
* relative-axis (throttle doesn't flip back, a stick does, need to handle that)
|
|
* trigger to button
|
|
* dpad to axis
|
|
* dpad to button
|
|
* inversal of axis
|
|
* soft-axis for dpad
|
|
|
|
(controller
|
|
(button (name "BTN_X") ;; X and Y send out BTN_X events
|
|
(device (xbox360-button "Y")
|
|
(xbox360-button "X")))
|
|
(button (name "BTN_A")
|
|
(device (inverse (xbox360-button "Y"))))
|
|
(axis (name "ABS_X")
|
|
...
|
|
)
|
|
|
|
;; -- Pingus Input Configuration --
|
|
(pingus-controller
|
|
(standard-pointer
|
|
(usbmouse:pointer (device "/dev/input/mx500")))
|
|
|
|
(standard-scroller
|
|
(usbmouse:scroller (device "/dev/input/marblemouse")))
|
|
|
|
(primary-button
|
|
(usbmouse:button (device "/dev/input/mx500") (button 0)))
|
|
|
|
(secondary-button
|
|
(usbmouse:button (device "/dev/input/mx500") (button 1)))
|
|
|
|
(pause-button
|
|
(usbmouse:button (device "/dev/input/mx500") (button 4)))
|
|
|
|
(fast-forward-button
|
|
(usbmouse:button (device "/dev/input/mx500") (button 3)))
|
|
|
|
;; (armageddon-button
|
|
;; (usbmouse:button (device "/dev/input/mx500") (button 4)))
|
|
|
|
(escape-button
|
|
(sdl:keyboard-button (key "escape")))
|
|
|
|
(action-up-button
|
|
(usbmouse:button (device "/dev/input/mx500") (button 6)))
|
|
|
|
(action-down-button
|
|
(usbmouse:button (device "/dev/input/mx500") (button 5)))
|
|
)
|
|
|
|
;; EOF ;;
|
|
|
|
|
|
# EOF #
|