Skip to content

Commit

Permalink
Release 0.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
yannbouteiller committed Oct 14, 2023
1 parent 4bf0ef0 commit 60bfb90
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 27 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ Virtual XBox360 and DualShock4 gamepads in python.
Virtual Gamepad (```vgamepad```) is a small python library that emulates XBox360 and DualShock4 gamepads on your system.
It enables controlling e.g. a video-game that requires analog input, directly from your python script.

On Windows ```vgamepad``` uses the [ViGEm](https://github.com/ViGEm) C++ framework, for which it essentially provides python bindings and a user-friendly interface.
On Windows ```vgamepad``` uses the [Virtual Gamepad Emulation](https://github.com/nefarius/ViGEmBus) C++ framework, for which it essentially provides python bindings and a user-friendly interface.

---

__Status:__
__Development status:__

| Windows | Linux |
|:---------------:|:------------------------------------------------:|
| *Full support.* | *Alpha,*<br/>see [Linux notes](readme/linux.md). |
| Windows | Linux |
|:---------:|:-------------------------------------------------------:|
| *Stable.* | *Experimental,*<br/>see [Linux notes](readme/linux.md). |


## Quick links
Expand Down Expand Up @@ -42,7 +42,7 @@ Accept the licence agreement, click ```Install```, allow the installer to modify

### Linux:

See [Linux notes](readme/linux.md).
Please read the [Linux section](readme/linux.md).

---

Expand Down
44 changes: 23 additions & 21 deletions readme/linux.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,9 @@
# Linux

`vgamepad` is now partly supported on Linux.
`vgamepad` is partly supported on Linux since version `0.1.0`.

Contrary to Windows, support for Linux is experimental and subject to future breaking changes.
If your python project for Linux relies on `vgamepad`, please use the exact `vgamepad` version you are relying on in your project dependencies.

## Differences with Windows
On Windows, `vgamepad` is currently a wrapper around Nefarius' [Virtual Gamepad Emulation](https://github.com/nefarius/ViGEmBus) framework.
As such, it emulates true physical DS4 and X360 gamepads.

On Linux, `vgamepad` currently relies on `libevdev`.
It emulates a subset of the X360 and DS4 capabilities in `evdev` by managing a virtual `uinput` device.

While we are trying to make this emulation close to the real thing, we are not quite there yet.
If you know how to advance toward this goal, your contribution would be **very appreciated** :heart_eyes:

For now, most basic `vgamepad` calls work on Linux, but you shouldn't expect your app to react exactly as if an actual X360 / DS4 gamepad were connected to your machine.
However, the corresponding `evdev` event should be similar.

**What you should know:**
- Detected buttons, ordering and axes directions are typically different from Windows (depending on your app)
- Force feedback / LEDS are not implemented on Linux yet
- DS4 touchpad / motion sensor are not implemented on Linux yet (no extended report)
- Real DS4s fire a button event when you press the triggers (on top of the axis event), this button event is not implemented in `vgamepad` at the moment
If your python project for Linux relies on `vgamepad`, please specify the exact version you are relying on in your project dependencies.

## Installation

Expand Down Expand Up @@ -53,3 +34,24 @@ pip install vgamepad
```

```vgamepad``` is now installed in your active python environment.


## Differences with Windows
On Windows, `vgamepad` is currently a wrapper around Nefarius' [Virtual Gamepad Emulation](https://github.com/nefarius/ViGEmBus) framework.
As such, it emulates true physical DS4 and X360 gamepads.

On Linux, `vgamepad` currently relies on `libevdev`.
It emulates a subset of the X360 and DS4 capabilities in `evdev` by managing a virtual `uinput` device.

While we are trying to make this emulation close to the real thing, we are not quite there yet.
If you know how to advance toward this goal, your contribution will be **very appreciated** :heart_eyes:

For now, most basic `vgamepad` calls work on Linux, but you should not expect your application to react exactly as if an actual X360 / DS4 gamepad were connected to your machine.
Nevertheless, the corresponding `evdev` event should be similar.

**What you should know:**
- Detected buttons, ordering and axes directions are typically different from Windows (depending on your app)
- Force feedback / LEDS are not implemented on Linux yet
- DS4 touchpad / motion sensor are not implemented on Linux yet (no extended report)
- Real DS4 gamepads fire a button event when you press the triggers (on top of the axis event), this button event is not implemented in `vgamepad` at the moment
- The X360 "guide" (mode) button is not implemented in `vgamepad` at the moment

0 comments on commit 60bfb90

Please sign in to comment.