Welcome to mirror list, hosted at ThFree Co, Russian Federation.

params.json - github.com/ynsta/steamcontroller.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 4c0b48f0d918b6d7706e334d64875fd2f73f6202 (plain)
1
{"name":"Steamcontroller ","tagline":"Standalone Steam Controller Driver","body":"# Standalone Steam Controller Driver\r\n\r\nThis project is a standalone userland driver for the steam controller to be used where steam client can't be installed.\r\n\r\nTwo modes are already working with haptic feedback:\r\n - xbox360: gamepad emulator\r\n - desktop: mouse, keyboard mode\r\n\r\nThe final purpose is to have support for custom mapping created with a stand-alone tool or imported from steam vdf files.\r\n\r\nThe initial target is *GNU/Linux*, but I'll welcome any contributor that want to port input generation for other OS (OSX, Windows, *BSD, Android/Linux, ...)\r\n\r\nThis project is licensed under MIT.\r\n\r\n## Installation\r\n\r\n 1. Install dependencies\r\n   * for python 3.4+:\r\n     - Install python libusb1 `sudo pip install libusb1`\r\n   * for python 2.7+ (you might have to use pip2 for python2.7 or pip3 for python3):\r\n     - Install python libusb1 `sudo pip install libusb1`\r\n     - Install python enum backport `sudo pip install enum34`\r\n\r\n 2. Get the project [tarbal](https://github.com/ynsta/steamcontroller/archive/master.tar.gz) or clone it from github:\r\n    ```shell\r\n# Get from tarbal:\r\nwget https://github.com/ynsta/steamcontroller/archive/master.tar.gz\r\ntar xf master.tar.gz\r\ncd steamcontroller-master\r\n# or clone it:\r\ngit clone https://github.com/ynsta/steamcontroller.git\r\ncd steamcontroller\r\n```\r\n\r\n 3. Install python modules and scripts with `sudo python setup.py install`\r\n\r\n 4. Install udev rules (if not already done for steam) in `/etc/udev/rules.d/99-steam-controller.rules`:\r\n    ```shell\r\n# replace game group by a valid group on your system\r\n# Steam controller keyboard/mouse mode\r\nSUBSYSTEM==\"usb\", ATTRS{idVendor}==\"28de\", GROUP=\"games\", MODE=\"0660\"\r\n\r\n# Steam controller gamepad mode\r\nKERNEL==\"uinput\", MODE=\"0660\", GROUP=\"games\", OPTIONS+=\"static_node=uinput\"\r\n```\r\n\r\n 5. Reload udev `sudo udevadm control --reload`\r\n\r\n## Usage\r\n\r\n 1. Exit Steam.\r\n 2. Start:\r\n   * `sc-xbox.py start` for the simple xbox360 emulator.\r\n   * `sc-desktop.py start` for the desktop keyboard/mouse mode.\r\n 3. Stop: `sc-xbox.py stop` or `sc-xbox.py stop`\r\n\r\nOther test tools are installed:\r\n - `sc-dump.py` : Dump raw message from the controller.\r\n - `sc-gyro-plot.py` : Plot curves from gyro data (require pyqtgraph and pyside installed).\r\n - `sc-test-cmsg.py` : Permit to send control message to the contoller. For example:  \r\n   `echo 8f07005e 015e01f4 01000000 | sc-test-cmsg.py` will make the controller beep.\r\n - `vdf2json.py` : Convert Steam VDF file to JSON.\r\n - `json2vdf.py` : Convert back JSON to VDF file.\r\n\r\n\r\n## TODO / Status\r\n\r\n 1. Finish to guess each bytes/bits roles in the usb message (Mostly **Done**).\r\n    - Verify that Gyroscope data 4 to 7 are a quaternion as suspected\r\n 2. Understand how to configure haptic feed backs (**Done**).\r\n 3. Understand how to enable gyroscopes (**Done**).\r\n 4. Redirect inputs to userland events via uinput (**Done**).\r\n    - Xbox360 uintput device (**Done**)\r\n    - Keyboard uintput device (**Done**)\r\n    - Mouse uintput device with trackball model (**Done**)\r\n 5. Create a simple xbox event mapper (**Done**)\r\n 6. Create a configurable event mapper (**Work in Progress**):\r\n   - Create an event mapper that reads steam vdf files and maps usb inputs to uinput events.\r\n   - Create fallback mappings for unsupported config options.\r\n   - Get all possible configurations of steam config file.\r\n 7. Create a haptic feedback Manager (**Work in Progress**)\r\n 8. Measure latencies.\r\n\r\n## Control Messages Capture\r\n\r\n 1. `sudo modprobe usbmon`\r\n 2. `lsusb -d 28de:1142` and look at bus and device numbers (B & D)\r\n 3. `sudo cat /sys/kernel/debug/usb/usbmon/Bu | grep Co:B:D:0` B=3 and D=003 on my setup.\r\n\r\n### Disable auto feedback on rpad:\r\n\r\n - `81000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000`\r\n\r\n### Enable Gyro\r\n\r\n - `87153284 03180000 31020008 07000707 00301400 2f010000 00000000 00000000`\r\n\r\n### Disable Gyro\r\n\r\n - `87153284 03180000 31020008 07000707 00300000 2f010000 00000000 00000000`\r\n\r\n## Control Messages formats\r\n\r\n### Haptic feedback format:\r\n\r\n - u8  : `8f`\r\n - u8  : `07`\r\n - u8  : `00` for Right `01` for Left\r\n - u16 : Amplitude\r\n - u16 : Period\r\n - u16 : count\r\n - pads the end with `00`\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}