Hello, Guest the thread was called575 times and contains 1 replay

last post from Mummelnase at the

8BITDO BT Controller und Vice/x64?

  • Hallo zusammen,


    ich versuche gerade meinen 8BITDO Bluetooth Controller unter Linux bequem mit Vice zu verbinden.
    Grundsätzlich funktioniert alles; Controller wird erkannt und lässt sich für Vice konfigurieren.


    Leider muss ich das jedes Mal machen, wenn ich den Controller anschalte.
    Zur Zeit mache ich das jstest-gtk, dort muss ich die "Hat" Achsen in der Prio nach oben schieben, erst dann werden sie von Vice auch als Joystick genutzt - sonst müsste ich den analogen Knüppel benutzen.
    Das ist halt insbesondere lästig da es zum einen jedes Mal gemacht werden muss, und zum anderen weil Vice den Joystick nur erkennt, wenn mit angeschalteten Joystick gestartet wird. Einmal in den Sleepmode und ich kann den Emu auch beenden.


    Geht das irgendwie besser? Ich hab auch schon mit antimicro experimentiert (ich hätte gerne Alt+F10 und Alt+F11 auf Buttons am Controller ;) ), aber da ist keine Reihenfolge der Achsen festlegbar.


    Gruß und Danke
    Thomas

  • So, ich antworte mir mal selbst, ich hab's nach viel Gefummle nun hinbekommen :)


    Ich beschreibe mal, wie ich vorgegangen bin. Das erfolgreiche Pairing mit dem Rechner setze ich mal vorraus.
    Zur Konfiguration benutze ich jscal aus dem "joystick" Paket, unter Ubuntu z.b. "sudo apt install joystick"


    Zuerst stellen wir die Reihenfolge der Achsen ein, ich habe das gemacht mit jscal-gtk, in meinem Fall handelt es sich um einen 8BITDO SN30 Pro, und wir gehen davon aus das das Gamepad sich unter /dev/input/js0 anmeldet.


    Für diesen nun das Mapping einstellen:


    Die "Hat" Achsen müssen oben stehen:

    In der oben zu sehenden Reihenfolge passen bei mir alle Achsen.


    Die Konfiguration ist nun nicht persistent, aber das Programm sagt uns schon, was wir tun müssen: "use the jscal store command provided by the package".
    Das machen wir nun, bzw wir lassen uns von jscal das Kommando geben, das dieses Mapping wieder herstellt:

    Shell-Script
    1. $ jscal -q /dev/input/js0
    2. jscal -u 8,16,17,0,1,2,5,3,4,10,304,305,306,307,308,309,310,311,312,313 /dev/input/js0



    jscal -u ... ist nun das Kommando, an dem wir interessiert sind. Dieses muss ausgeführt werden, wenn das Gamepad sich verbindet.
    Das erreichen wir mit udev.


    Zuerst müssen wir herausfinden, welche ID das Pad hat.



    Dazu an der Konsole ausführen:

    Shell-Script
    1. $ udevadm info -a /dev/input/js0

    Hier suchen wir nun den Part den das Pad betrifft, mit der Adresse.


    Damit basteln wir uns nun eine udev-Rule:


    Code: /etc/udev/rules.d/65-8bitdo.rules
    1. ATTRS{phys}=="f8:59:71:b6:b0:29", RUN="/usr/bin/jscal -u 8,16,17,0,1,2,5,3,4,10,304,305,306,307,308,309,310,311,312,313 /dev/input/js0"

    Unter "phys" tragen wir ein, was wir oben herausgefunden haben, und unter "RUN" das Kommando mit absolutem Pfad, das jscal ausgepuckt hat.


    Nun noch udev neu starten, z.B. "sudo systemctl restart udev" und beim nächsten Anmelden des Controllers sollte unter Vice das digitale Steuerkreuz ohne weitere Verrenkungen sofort zur Verfügung stehen :)