# LogiDrivePy - Logitech Controller Python Module
A Python module for interfacing with Logitech steering wheels. This module was tested with the Logitech G920 Driving Force Racing Wheel but should work with other Logitech devices as specified in the [Supported Devices](#supported-devices) section.
## Introduction
This Python module facilitates interaction with Logitech steering wheels, serving as a bridge between Python and the Logitech Steering Wheel's software components.
The original functionality was provided in the form of a C# implementation as part of the [Logitech Steering Wheel SDK](https://www.logitechg.com/en-us/innovation/developer-lab.html) for the [Unity Game Engine](https://assetstore.unity.com/packages/tools/integration/logitech-gaming-sdk-6630). The SDK allows developers to easily add Logitech steering wheel support to their games, using a set of predefined force feedback effects or creating custom effects by defining specific forces.
With the aim to extend these capabilities to the Python community, this module was developed as an accessible tool for Python developers. Utilizing the `ctypes` Python library, the module enables Python scripts to load and interact with Logitech steering wheels through Logitech's DLL (LogitechSteeringWheelEnginesWrapper.dll), providing a seamless integration experience for developers working with these devices.
## Supported Devices
This library was tested with the Logitech G920 Driving Force Racing Wheel, but according to Logitech documentation, it should also work with the following devices:
### Logitech
- G29
- G920
- Driving Force GT
- G27
- G25
- Driving Force Pro
- MOMO Force
- MOMO Racing
- Formula Force GP
- Driving Force
- Formula Force
- Force 3D
- Strike Force 3D
- Freedom 2.4 Cordless Joystick
- Cordless Rumblepad
- Cordless Rumblepad 2
- Rumblepad
### Microsoft
- Sidewinder Force Feedback 2 (Stick)
- Sidewinder Force (Wheel)
### Other (with Immersion drivers)
- Saitek Cyborg 3D Force
- Act-Labs Force RS Wheel
## Installation
To install the package, simply use pip:
```
pip install logidrivepy
```
The package directory layout is organized as follows:
```
LogiDrivePy
| .gitignore
| LICENSE.txt
| README.md
| setup.py
|
+---logidrivepy
| | constants.py
| | controller.py
| | functions.py
| | structs.py
| | __init__.py
| |
| +---dll
| | LogitechSteeringWheelEnginesWrapper.dll
|
+---tests
| run_controller_test.py
| spin_wheel_test.py
| __init__.py
```
## Usage
Here's a simple example on how to use the Logitech Controller module in your Python script.
```python
from logidrivepy import LogitechController
controller = LogitechController()
print(f"steering_initialize: {controller.steering_initialize()}")
print(f"logi_update: {controller.logi_update()}")
print(f"is_connected: {controller.is_connected(0)}")
controller.steering_shutdown()
```
## Dependencies
This library uses the `ctypes` Python library to load and call functions from the Logitech's DLL (LogitechSteeringWheelEnginesWrapper.dll). The ctypes library is part of the standard Python library and should be installed by default with a standard Python installation.
This library also requires `Tkinter`, a Python binding to the Tk GUI toolkit. Tkinter is part of the standard Python library for Python 3 and should be installed by default with a standard Python installation.
## License
This project is licensed under the terms of the MIT license. For more details, see the `LICENSE.txt` file.
Please note that this project is **not** a reverse engineering of the Logitech Gaming Steering Wheel SDK. Instead, this project aims to provide an interface to Logitech steering wheels in Python by utilizing the SDK's provided DLL file (LogitechSteeringWheelEnginesWrapper.dll) without decompiling, disassembling, or otherwise altering the SDK's components. This project is designed to extend the functionality of the SDK for Python developers while respecting and complying with the original End-User License Agreement of the SDK.
Raw data
{
"_id": null,
"home_page": "https://github.com/cengizozel/logidrivepy",
"name": "logidrivepy",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "logitech,g920,driving,steering-wheel,controller",
"author": "Cengiz Ozel",
"author_email": "cozel@cs.rochester.edu",
"download_url": "https://files.pythonhosted.org/packages/2e/a5/acfe7a5768fbadf6c1cae005932e7316ca1e77c002c6ece8a598c7b160d0/logidrivepy-0.2.0.tar.gz",
"platform": null,
"description": "# LogiDrivePy - Logitech Controller Python Module\r\n\r\nA Python module for interfacing with Logitech steering wheels. This module was tested with the Logitech G920 Driving Force Racing Wheel but should work with other Logitech devices as specified in the [Supported Devices](#supported-devices) section.\r\n\r\n## Introduction\r\n\r\nThis Python module facilitates interaction with Logitech steering wheels, serving as a bridge between Python and the Logitech Steering Wheel's software components.\r\n\r\nThe original functionality was provided in the form of a C# implementation as part of the [Logitech Steering Wheel SDK](https://www.logitechg.com/en-us/innovation/developer-lab.html) for the [Unity Game Engine](https://assetstore.unity.com/packages/tools/integration/logitech-gaming-sdk-6630). The SDK allows developers to easily add Logitech steering wheel support to their games, using a set of predefined force feedback effects or creating custom effects by defining specific forces.\r\n\r\nWith the aim to extend these capabilities to the Python community, this module was developed as an accessible tool for Python developers. Utilizing the `ctypes` Python library, the module enables Python scripts to load and interact with Logitech steering wheels through Logitech's DLL (LogitechSteeringWheelEnginesWrapper.dll), providing a seamless integration experience for developers working with these devices.\r\n\r\n## Supported Devices\r\n\r\nThis library was tested with the Logitech G920 Driving Force Racing Wheel, but according to Logitech documentation, it should also work with the following devices:\r\n\r\n### Logitech\r\n- G29\r\n- G920\r\n- Driving Force GT\r\n- G27\r\n- G25\r\n- Driving Force Pro\r\n- MOMO Force\r\n- MOMO Racing\r\n- Formula Force GP\r\n- Driving Force\r\n- Formula Force\r\n- Force 3D\r\n- Strike Force 3D\r\n- Freedom 2.4 Cordless Joystick\r\n- Cordless Rumblepad\r\n- Cordless Rumblepad 2\r\n- Rumblepad\r\n\r\n### Microsoft\r\n- Sidewinder Force Feedback 2 (Stick)\r\n- Sidewinder Force (Wheel)\r\n\r\n### Other (with Immersion drivers)\r\n- Saitek Cyborg 3D Force\r\n- Act-Labs Force RS Wheel\r\n\r\n## Installation\r\n\r\nTo install the package, simply use pip:\r\n```\r\npip install logidrivepy\r\n```\r\n\r\nThe package directory layout is organized as follows:\r\n```\r\nLogiDrivePy\r\n| .gitignore\r\n| LICENSE.txt\r\n| README.md\r\n| setup.py\r\n|\r\n+---logidrivepy\r\n| | constants.py\r\n| | controller.py\r\n| | functions.py\r\n| | structs.py\r\n| | __init__.py\r\n| |\r\n| +---dll\r\n| | LogitechSteeringWheelEnginesWrapper.dll\r\n|\r\n+---tests\r\n | run_controller_test.py\r\n | spin_wheel_test.py\r\n | __init__.py\r\n```\r\n\r\n## Usage\r\n\r\nHere's a simple example on how to use the Logitech Controller module in your Python script.\r\n\r\n```python\r\nfrom logidrivepy import LogitechController\r\n\r\ncontroller = LogitechController()\r\n\r\nprint(f\"steering_initialize: {controller.steering_initialize()}\")\r\nprint(f\"logi_update: {controller.logi_update()}\")\r\nprint(f\"is_connected: {controller.is_connected(0)}\")\r\n\r\ncontroller.steering_shutdown()\r\n```\r\n\r\n## Dependencies\r\n\r\nThis library uses the `ctypes` Python library to load and call functions from the Logitech's DLL (LogitechSteeringWheelEnginesWrapper.dll). The ctypes library is part of the standard Python library and should be installed by default with a standard Python installation.\r\n\r\nThis library also requires `Tkinter`, a Python binding to the Tk GUI toolkit. Tkinter is part of the standard Python library for Python 3 and should be installed by default with a standard Python installation.\r\n\r\n## License\r\n\r\nThis project is licensed under the terms of the MIT license. For more details, see the `LICENSE.txt` file.\r\n\r\nPlease note that this project is **not** a reverse engineering of the Logitech Gaming Steering Wheel SDK. Instead, this project aims to provide an interface to Logitech steering wheels in Python by utilizing the SDK's provided DLL file (LogitechSteeringWheelEnginesWrapper.dll) without decompiling, disassembling, or otherwise altering the SDK's components. This project is designed to extend the functionality of the SDK for Python developers while respecting and complying with the original End-User License Agreement of the SDK.\r\n\r\n\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A Python module for interfacing with Logitech steering wheels.",
"version": "0.2.0",
"project_urls": {
"Homepage": "https://github.com/cengizozel/logidrivepy"
},
"split_keywords": [
"logitech",
"g920",
"driving",
"steering-wheel",
"controller"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "762024b7c027f22daac3739a16b7bfb7e48720d6090e29c31c56f86efdcceff9",
"md5": "6c2403e9821f4d3aaf1d6ac391dd1d34",
"sha256": "f1b84e3a606eac90b11bcaf1f060fa294aeac568e69c21780772d4956bf33a1f"
},
"downloads": -1,
"filename": "logidrivepy-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6c2403e9821f4d3aaf1d6ac391dd1d34",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 18520,
"upload_time": "2023-06-04T11:20:09",
"upload_time_iso_8601": "2023-06-04T11:20:09.553676Z",
"url": "https://files.pythonhosted.org/packages/76/20/24b7c027f22daac3739a16b7bfb7e48720d6090e29c31c56f86efdcceff9/logidrivepy-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2ea5acfe7a5768fbadf6c1cae005932e7316ca1e77c002c6ece8a598c7b160d0",
"md5": "55c491e91c99113cbed89aee5e899813",
"sha256": "8607d6b6e99ef6bd789052ac0d9bf4dd47884ed0fc436a7118f46f9de76295c9"
},
"downloads": -1,
"filename": "logidrivepy-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "55c491e91c99113cbed89aee5e899813",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12528,
"upload_time": "2023-06-04T11:20:11",
"upload_time_iso_8601": "2023-06-04T11:20:11.849395Z",
"url": "https://files.pythonhosted.org/packages/2e/a5/acfe7a5768fbadf6c1cae005932e7316ca1e77c002c6ece8a598c7b160d0/logidrivepy-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-04 11:20:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cengizozel",
"github_project": "logidrivepy",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "logidrivepy"
}