rmst / yoke

Turns your Android device into a customizable gamepad for Windows/Mac/Linux
MIT License
219 stars 24 forks source link

We can freely choose layouts now [builds upon PR #35] #36

Closed medape closed 5 years ago

medape commented 5 years ago

Please forgive the chaos, I thought this merited a new pull request.

The hardcoded layout in service.py is now gone. We can freely choose layouts from the webview.

In this version, every time the user presses a button in the webview to choose a layout, base.js sends the list with the kernelEvents. Meanwhile, service.py tests every message to check if it begins with a letter or a number. If it begins with a letter, it tries to interpret the layout, and, upon success, destroys the current vJoy instance and creates another.

This PR also includes the changes done in PR #35. As such, it also fulfills the third objective in issue #33.

I've done some very basic tests with jstest-gtk and it seems to work, but I'd appreciate you check it and review it.

pzmarzly commented 5 years ago

@rmst : This PR simplifies bin/yoke, removing inheritance & dependency injection that was there. I'm okay with it, but I thought you should be informed.

BTW I don't have write permissions to yoke-android. You can give them to me if you don't want to be bothered later.

medape commented 5 years ago

Important fix: I've made no changes for Linux, but this branch now works on Windows too. There are still some things to iron out.

It's supposed to work for any Windows from 7 to 10, as it downloads different DLLs and prompts the user to download different installer, depending on OS version and Python machine. Still, I could only test it worked on Windows 10, 64-bit machine, 32-bit Python (why didn't I download a 64-bit Python distribution I'll never know).

It doesn't work as smoothly as in Linux. There's a small but noticeable latency, even when you disable any post-processing on the vJoy driver itself. Also, vJoy follows a very different design from uinput (you can't easily do a translation from uinput events to vJoy fixed axes), so for the moment kernel events are bound to any axis, without regard for meaning or for it being actually enabled.

I don't think I'll be sending any more commits to this branch unless we notice a mistake or something. I suppose this PR is already hard enough to review this as it is; I just felt this was an important and relevant addition.