ICade bluetooth tastatur mappings für MAME?

Ich habe gerade eine iCade – es ist technisch für ein Apple iPad, aber es ist im Grunde eine generische Bluetooth-Tastatur Arcade-Controller .

ICade pic

Es ist großartig! Aber sobald ich gepaart es mit meinem Laptop als Bluetooth-Tastatur zum Testen, entdeckte ich etwas seltsam, das nicht gut für die Verwendung der iCade mit MAME . Alle Eingänge erscheinen als zwei (und nur zwei) Tastendrücken – eine Taste, wenn sie nach unten gedrückt wird, und eine andere Taste, wenn sie losgelassen wird . Wie so:

Joystick

w , ea , qd , cx , z

Schaltflächen

 (1 Rot) y , t (2 blk) u , f (3 blk) i , m (4 wht) o , g  

 (5 Rot) h , r (6 blk) j , n (7 blk) k , p (8 wht) l , v  

Die meisten MAME-Emulatoren erwarten ein Standard-Tastaturverhalten. Das heißt, wenn du nach links drückst, gehst du die ganze Dauer der Bewegung nach unten .

Dies ist nicht eine große Sache für die Tasten – Knöpfe sind sofort zu aktivieren, wenn ich y auf meine Tastatur gedrückt habe, ist das gleiche wie, sagen wir, drücken Feuer in Galaxian.

Aber es macht den Joystick zu einem Nicht-Starter, da die Tastaturtaste nicht "heruntergehalten" ist – das heißt, wenn ich den Joystick benutze und ← drückst, wird man irgendwie gesendet. Aber wenn ich aufhöre ← q ist gesendet.

Wie kann ich MAME oder andere Emulatoren konfigurieren, um mit dem iCade Joystick und seiner eigenartigen Tastaturschnittstelle zu arbeiten? Gibt es eine Möglichkeit, eine MAME-Konfigurationsdatei zu erstellen, die mit dem iCade arbeiten wird?

  • Hinzufügen von weiteren ROMs zu MAME auf X-Arcade
  • 2 Solutions collect form web for “ICade bluetooth tastatur mappings für MAME?”

    Leider ist diese seltsame Operation ein Hack zur Unterstützung von iOS aufgrund der begrenzten API-Unterstützung für externe Hardware. Derzeit stellt das iOS-SDK die internen UIEvents für Keydown- / Keyup-Nachrichten nicht bereit, so dass ION zwei Tastendrücken sendet, um es Entwicklern zu ermöglichen, Zustandsübergänge für Emulatoren und Spiele zu bestimmen. Im Grunde ein Keydown / Keyup, wenn Sie eine Taste drücken und dann eine zweite Keydown / Keyup, wenn Sie die Taste loslassen. Dies ist keine Standardtastatur, wie Sie entdeckt haben.

    Ich bin bereit zu wetten, es ist eine Kombination von Tasten, die die iCade ändern würde, um sich wie eine normale Tastatur zu verhalten, und ich gebe jedem viel Glück, das herauszufinden! Andere Controller, wie die iControlPad haben mehrere Betriebsarten, weshalb ich vermute, dass die iCade ähnlich ist.

    Ich habe ein MIT lizenziertes SDK für iCade letzte Nacht erstellt und veröffentlicht, aber ich bezweifle, dass du das auf einem iPad läuft.

    Ich schaute in die Quelle von MAME und leider scheint es nicht zu unterstützen, es sieht aus wie die iCade Jungs waren die ersten, die es doch denken mussten. Ich sehe zwei Optionen:

    1. Machen Sie einen Patch und fügen Sie diese Fähigkeit zur Quelle von MAME hinzu. (Ich bin eigentlich auf diese Liste der Hobby-Coding-Projekte, wenn ich um es herum)

    2. Verwenden Sie ein Zwischenprogramm, um die Schlüsselimpulse in Schlüsselpressen zu übersetzen.

    Option 2 ist die einfachere Lösung, hier ist mein Stab bei es mit AutoHotKey:

    ; This is a program to translate the iCade to normal button presses. Use with ; the MAME controller configuration posted with this file at ; http://gaming.stackexchange.com/questions/24774/icade-bluetooth-keyboard-mappings-for-mame ; Press END to terminate script ; iCade layout, first letter is the pressed signal, the second key is the ; released signal. ; ; Joystick ; ; w, e ; ; a, qd, c ; ; x, z ; ; Buttons ; ; (1 red) y, t (2 blk) u, f (3 blk) i, m (4 wht) o, g ; ; (5 red) h, r (6 blk) j, n (7 blk) k, p (8 wht) l, v ; If it is not sending commands try another send mode. ; AutoHotKey and MAME have been known to be problematic on Win7. ; You may need to totally disable UAC and reboot before it will work. ;SendMode Play ;SendMode Input end::ExitApp #IfWinActive ahk_class MAME w::Send {Blind}{Up downtemp} e::Send {Blind}{Up up} a::Send {Blind}{Left downtemp} q::Send {Blind}{Left up} d::Send {Blind}{Right downtemp} c::Send {Blind}{Right up} x::Send {Blind}{Down downtemp} z::Send {Blind}{Down up} y::Send {Blind}{1 downtemp} ; Red top row t::Send {Blind}{1 up} ; Red top row u::Send {Blind}{2 downtemp} ; Left black top row f::Send {Blind}{2 up} ; Left black top row i::Send {Blind}{3 downtemp} ; Right black top row m::Send {Blind}{3 up} ; Right black top row o::Send {Blind}{4 downtemp} ; White top row g::Send {Blind}{4 up} ; White top row h::Send {Blind}{5 downtemp} ; Red bottom row r::Send {Blind}{5 up} ; Red bottom row j::Send {Blind}{6 downtemp} ; Left black bottom row n::Send {Blind}{6 up } ; Left black bottom row k::Send {Blind}{7 downtemp} ; Right black bottom row p::Send {Blind}{7 up} ; Right black bottom row l::Send {Blind}{8 downtemp} ; White bottom row v::Send {Blind}{8 up} ; White bottom row 

    Hier ist eine Pre-Setup-Konfigurationsdatei, lass es einfach in den Ordner ctrlr mit dem Namen icade.cfg und startet MAME mit der switch -ctrlr icade

     <?xml version="1.0"?> <!-- iCade input configuration file --> <!-- Requires the AutoHotKey script at http://gaming.stackexchange.com/questions/24774/icade-bluetooth-keyboard-mappings-for-mame --> <mameconfig version="10"> <system name="default"> <input> <port type="P1_JOYSTICK_UP"> <newseq type="standard"> KEYCODE_UP </newseq> </port> <port type="P1_JOYSTICK_DOWN"> <newseq type="standard"> KEYCODE_DOWN </newseq> </port> <port type="P1_JOYSTICK_LEFT"> <newseq type="standard"> KEYCODE_LEFT </newseq> </port> <port type="P1_JOYSTICK_RIGHT"> <newseq type="standard"> KEYCODE_RIGHT </newseq> </port> <port type="P1_BUTTON1"> <newseq type="standard"> KEYCODE_1 </newseq> </port> <port type="P1_BUTTON2"> <newseq type="standard"> KEYCODE_2 </newseq> </port> <port type="P1_BUTTON3"> <newseq type="standard"> KEYCODE_3 </newseq> </port> <port type="P1_BUTTON4"> <newseq type="standard"> KEYCODE_5 </newseq> </port> <port type="P1_BUTTON5"> <newseq type="standard"> KEYCODE_6 </newseq> </port> <port type="P1_BUTTON6"> <newseq type="standard"> KEYCODE_7 </newseq> </port> <port type="P1_START"> <newseq type="standard"> KEYCODE_4 </newseq> </port> <port type="START1"> <newseq type="standard"> KEYCODE_4 </newseq> </port> <port type="COIN1"> <newseq type="standard"> KEYCODE_8 </newseq> </port> </input> </system> <system name="neogeo"> <input><port type="P1_BUTTON1"> <newseq type="standard"> KEYCODE_1 </newseq> </port> <port type="P1_BUTTON2"> <newseq type="standard"> KEYCODE_2 </newseq> </port> <port type="P1_BUTTON3"> <newseq type="standard"> KEYCODE_3 </newseq> </port> <port type="P1_BUTTON4"> <newseq type="standard"> KEYCODE_4 </newseq> </port> <port type="P1_BUTTON5"> <newseq type="standard"> KEYCODE_5 </newseq> </port> <port type="P1_BUTTON6"> <newseq type="standard"> KEYCODE_6 </newseq> </port> <port type="P1_BUTTON7"> <newseq type="standard"> KEYCODE_7 </newseq> </port> <port type="P1_BUTTON8"> <newseq type="standard"> KEYCODE_8 </newseq> </port> </input> </system> </mameconfig> 
    Wir lieben es zu spielen, vor allem Videospiele.