Vor kurzem kam mir die Idee TinkerForge Bricklets als Eingabegeräte für Spiele zu benutzen. So könnte man z.B. ein Rotary Poti zur Trimmung in Flugsimulatoren benutzen oder Schalter am IO 16 Bricklet benutzen um ein Cockpit nachzubauen. Da Spiele meistens mit Joystickeingaben klar kommen war mir klar, dass ich aus dem Stack irgendwie einen Joystick machen musste. Nach einer kurzen Anfrage im TinkerForge Forum erhielt ich die Antwort, dass Joysticks – genauso wie Mäuse und Tastaturen – auf HID Treiber setzen. Ich musste also ein HID Gerät simulieren.
Um das ganze möglichst einfach zu halten entschied ich mich das ganze in Python umzusetzen. Außerdem gibt es auf GitHub das Repository python-uinput. Dieses konnte ich bereits als Grundaufbau verwenden und musste so nur noch die Übersetzung von TinkerForge auf uinput vornehmen. Ich habe in meinen GitHub Repo den Quellcode online gestellt, den ich dafür entwickelt habe. Zusätzlich müssen Python3, die TinkerForge Bindings sowie python-uinput gemäß der Anleitungen installiert worden sein.
Anschließend können die Python Scripts aus meinem Repo (zurzeit nur Rotary Poti) mit “sudo python3 <scriptname>” ausgeführt werden. Die root Rechte sind dabei erforderlich. Des weiteren funktioniert der virtuelle Treiber nur unter Linux (getestet unter Ubuntu). Unter Windows könnte das gleiche mit vmulti möglich sein. Das Problem ist dabei allerdings, dass ich keine besonders großen C Kentnisse habe und der Treiber auf 64 Bit Windows Versionen nicht akzeptiert werden würde, da dort nur signierte Treiber verwendet werden können (oder man schaltet diese Prüfung komplett ab, auch nicht ratsam). Da die meisten Computer – gerade Rechner auf denen Spiele laufen – 64 Bit seien dürften, habe ich mich dazu entschieden für Windows keinen entsprechenden Treiber zu entwickeln. Unter Linux werde ich allerdings meine Scripts noch weiterentwickeln. Mal sehen ob ich es schaffe ein Cockpit von einem kleinen Flugzeug (in Flightgear) nachzubauen und es entsprechend anzubinden. Den Code werde ich auf GitHub auf jeden Fall noch erweitern.
Hier mal ein Screenshot von dem virtuellem Joystick in jstest-gtk:
Wer noch Fragen oder Ideen hat, wie sich das unter Windows leichter umsetzen ließe, kann das natürlich gerne in die Kommentare schreiben.