// 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 * 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 #