KeyMapper IME (Bluetooth Gamepad Button Remapping)

wooglewookie

wooglewookie

Erfahrenes Mitglied
64
Hallo, wollte mal kurz meine kleine App hier vorstellen. Die gibt es derzeitig noch nicht im offiziellen AppStore. Bin mir auch noch nicht sicher, ob ich die dort hinpacken möchte.

Die App ist für all diejenigen die ein Bluetooth Gamepad besitzen und ihr Handy nicht gerootet haben.

Die App ermöglicht euch die Buttons des Gamepads umzumappen. Sprich, ihr könnt entscheiden was für ein KeyEvent an die App gesendet wird, wenn ihr die Buttons betätigt. Ebenfalls könnt ihr Bluetooth Keyboards ummappen. Halt alles, was als Input Gerät erkannt wurde und KeyEvents sendet.

Es kann sein das es sowas ähnliches schon im AppStore gibt, aber die Apps, welche ich getestet habe, klappten alle nicht so wie ich wollte. Deshalb der Grund der Eigenentwicklung.

Ich nutze es derzeitig mit meinem CreeDroid Mobile und dem Nexus 4. Kann dank der App nun GTA3, GTA3 VC und Nova zocken. Was vorher nicht möglich war.

Die App benötigt keine speziellen Rechte. Sie funktioniert als Tastatur damit es die Hardware KeyEvents bearbeiten kann.

Download (derzeitig Dropbox):
https://www.dropbox.com/sh/2b26jagezqka08y/b_sLPlgwpr/KeyMapper.apk

Infos zur App:
https://www.android-hilfe.de/forum/...ter-halterung.359308-page-2.html#post-5606782

Vielleicht ist es für dein ein oder anderen nützlich.
 

Anhänge

  • Screenshot_2013-04-21-18-55-55.png
    Screenshot_2013-04-21-18-55-55.png
    937 Bytes · Aufrufe: 1.804
  • Screenshot_2013-04-21-18-56-14.png
    Screenshot_2013-04-21-18-56-14.png
    1,1 KB · Aufrufe: 1.759
Zuletzt bearbeitet:
  • Danke
Reaktionen: Cris_, kosmus, brot und 2 andere
Erstmal danke für deine Mühe, die du dir gemacht hast, aber ich verstehe nur Bahnhof. Ich habe den normalen Creedroid und verstehe nicht ganz wie du die Button neu belegst. Ich möchte Nova 3 mit dem Pad spielen, wie bekomme ich raus welche Befehle nötig sind, damit ich die Steuerung auf mein Pad lege ?
 
Du kannst da schon auf ein fertiges default Mapping zurückgreifen. Damit NOVA funktioniert, einfach bei Current profile "Creedroid Mobile Remapped" auswählen.
Das klappt mit Nova und GTA einwandfrei. Du schaltest dann bei Tastatur & Eingabemethoden, wo Standard steht auf den Keymapper um. Verbindest das Pad im Gamepadmode via Bluetooth (das kann man auch vorher machen), startest Spiel, fertig.

Bei Fragen ruhig stellen.

Bei den custom profilen muss man das mapping selbst einstellen. Das sind einfach zuweisungen die mit Semikolon getrennt werden. Fande das die schnellste art tasten umzuschalten. Bei Emulatoren hat man z.B. eine riesige Liste von Tasten die man mühselig durchscrollen muss. Das fand ich zu anstrengend. Vllt. ist meine Mthode etwas zu kompliziert, Ideen sind willkommen.

Die App kommt in den Appstore, Dev Account hab ich schon. Will aber noch was dazuprogrammieren, bevor ich es reinstelle.

Hab gerade noch etwas prorgammiert. Da war noch ein bug, das custom profile wohl nicht richtig geladen worden. Ist auf der Dropbox aktualisiert. Es sind nun auch Kombinationen möglich. also Button1+Button2 sendet ButtonA Event. (buttona&buttonb=buttonc)
 
Zuletzt bearbeitet:
Hab nochmal aktualisiert. Konfig wird nun sofort geladen. Sprich man muss nicht mehr umständlich zwischen den Keyboards wechseln, wenn man die Einstellung ändert. Die Buttonkombinationen haben nicht immer sauber funktioniert, ist damit nun auch beseitigt.

Jetzt ist für mich GTA3 voll spielbar. Ich kann Waffen wechseln, Radiosender umschalten sowie Hupen. Dank der Keykombis kann man nun mehr Buttons mappen, als man überhaupt auf dem Gamepad hat.
 
Super App! Funktioniert das ganze auch mit USB Gamepads?
 
Da mein Nexus4 kein OTG kann, konnte ich das nicht testen. Theoretisch sollte es keine Probleme geben. Ist von Prinzip das gleiche nur die Anbindung des Gamepads ist eine andere :D Denke egal ob Bluetooth oder USB, Hardwarekeyevents werden bei beiden gesendet und können mit der App umgelenkt werden.
 
Die Keycodes werden angezeigt, das PS3 Gamepad (per USB) also erkannt. Nur funktioniert es nicht im Spiel Nova 3. Ich hab das mitgelieferte Profil probiert und ein anderes, was ich in einem anderen Thread gefunden habe. Die Tastatur ist aktiviert. Mein Gerät ist ein Galaxy S4.
 
Zuletzt bearbeitet:
Welche Keycodes senden den die einzelnen Buttons? Dann kann ich dir schreiben was ins Profil müsste. Das voreingestellte Profil ist nur für das Creedmobile. Zugegeben die Konfiguration ist nicht ganz so einfach, mir fehlt da aber noch eine Idee wie man es nutzerfreundlich aber auch gleichzeitig dynamisch machen könnte. Ich kann dir da sicher bei der Konfiguration für Nova helfen.
 
Das Mappen könnt ich selbst machen. Ich müsste nur wissen, welche Keycodes ein Moga Pad sendet.
 
Ich dachte PS3 Pad? Der Keymapper hat eine Option, welche dir die Keyevents anzeigt, wenn du die Buttons drückst.
Welche Keyevents Nova3 verwendet, siehst du im Thread den ich verlinkt habe. Es sind aufjedenfall buttonx,buttony,buttona,buttonb,buttonl1,buttonr1 etc.
 
Ich möchte auch ein PS3 Pad benutzen. Ich dachte nur ich müsste die PS3 Buttons auf die Keycodes des unterstützten Moga Pads mappen.

Wenn Nova3 die Keycodes verwenden würde, würde ja im Prinzip nur bei einer Taste die falsche Aktion im Spiel ausgeführt werden. Doch was ich auch drücke, Nova reagiert nicht auf Gamepad Eingaben.

Das Nova Profil von hier habe ich auch schon probiert.
 
Jo, dass das Profil nicht geht liegt daran, das es auf die Buttonevents vom Hama Gampad eingestellt ist. Auf dem Hama Pad ist schon z.B. der Button A mit dem Button Event "Button 2" verknüpft. Damit aber nun statt "Button 2" "Button A" an die App gesendet wird, muss ich im Profil "button2=buttona" einstellen.

Genauso solltest du auch vorgehen. Du prüfst vorher welche Events dein PS3 Gamepad sendet. Dafür aktivierst du in den Optionen, das es dir die Events anzeigt. Jetzt gehst du einfach alle Tasten(einmal drück reicht) und notierst dir, welcher Event da abgefeuert wird. Damit es nun auch unter Nova3 reagieren kann, musst du nun jedes Button Event, welches du dir notiert hast auf das passende Button Event von Nova zuweisen. Bei welchen Events Nova3 reagiert hab ich dir oben notiert. Unter Hilfe kannst du bei Nova3 auch noch die Tstenbelegung vom Mogapad sehen und die restlichen Events davon ableiten.

Schade das ich keine PS3 und ein Android Handy mit OTG besitze, sonst hätte ich dir einfach das Profil hier reinkopiert :)

Der ursprüngliche Beitrag von 19:58 Uhr wurde um 20:00 Uhr ergänzt:

Eventuell sollte ich Spieleprofile einfügen, wo man die Spielaktionen einfach einen Button zuweisen kann. Das würde vieles vereinfachen.
 
Das Problem ist ja, dass Nova überhaupt keine Reaktion zeigt. Bei keiner Taste. Es müsste theoretisch eine falsche Aktion ausführen, wenn ich z.B. button_a drücke. Macht es aber nicht. Es reagiert einfach nicht. Dein Beispiel Button A entspricht dem Viereck Button. Wenn ich diesen Drücke, passiert nichts.

Das Nova 3 Profil im anderen Thread macht ja nichts anderes, als die Keycodes des Direct-Input (Zahlen) Gamepads auf die Keycodes des XInput (Xbox 360 Bezeichnungen) zu mappen. Da aber das PS3 Gamepad schon z.B. Button_a hat müsste, wenn ich diesen drücke im Spiel etwas passieren. Tut es aber nicht. (Tastatur ist aktiviert und standart, Gamepad angschlossen, blablabla)

Übrigens kommt zum Beispiel der Name Button_a für zwei unterschiedliche Buttons (mit unterschiedlichen Key Codes) vor, weshalb ich das Arbeiten mit den Keycodes praktischer fände.
 
Zuletzt bearbeitet:
Du kannst mit Keycodes arbeiten, das macht die Tastatur auch intern. Einfach #123 für Keycode 123.

Wenn du jetzt Viereck drückst, welcher Keycode wird angezeigt, bzw. wird gesendet?

Beim Hamapad damals war jeder Button auf Springen gemapped. Bzw. Bei den Button Events mit der Button_1 - Button-x reagiert es immer mit springen.

Welche Android Version hast du?
Kann ja sein, das du einen Bug entdeckt hast :)
 
Bei Viereck bekomm ich angezeigt: button_a und den Keycode 96. (Dreieck ist übrigens button_a (97)) Er springt ja nicht mal. Im Spiel passiert einfach gar nichts.

Auf meinem Gerät läuft Android 4.2.2.
 
Wenn du ein Button vom PS3 Gamepad auf einen Buchstaben mappst, kannst du den im Google Suchefeld was schreiben oder klappt das auch nicht? Das bei beiden button_a angezeigt wurde, war ein Bug hab ich gerade mal beseitigt. Sorry, mal sollte nicht soviel Copy&Pasten :D Ich lad es gleich nochmal in Dropbox hoch. Link zur Dropbox ist im ersten Post zufinden.
 
Zuletzt bearbeitet:
Die Buttons mit a ;) simulieren den Zurück Softkey. Die anderen z.B. button_x oder button_y senden keinen Buchstaben. Ich würde das ganze ja ummappen, weiß aber nicht ob ich einfach z.B. KEYCODE_H aus der Android SDK Dokumentation benutzen kann.

BTW: Der Linke Stick hat die selben Keycodes wie das DPad, L2 und R2 die selben wie L1 und R1 und der rechte Stick hat gar keine Keycodes.
 
Ich meinte, wenn du z.B. Button_a auf einen Buchstaben mappst, kannst du damit schreiben :) Also als Test. Buchstaben kannst du ganz einfach so mappen:

Code:
button_a=z

Dann schreibt es in das Suchfeld das "z", wenn man den Button drückt, der Buttonevent_a sendet.

Du kannst die keycodes aus dem SDK verwenden. Groß- und Kleinschreibung ist egal. Und "KEYCODE_" kannst du weglassen. KeyEvent | Android Developers

Beschrieben hab ich es hier:
https://www.android-hilfe.de/forum/...ter-halterung.359308-page-2.html#post-5606782

Dass das Dpad und der links Stick die gleichen Codes haben,s cheint wohl normal. Ist beim Hama auch. Der rechte Stick lässt sich bei mir ebenfalls nicht über Keyevents auslesen, warum weiß ich noch nicht genau. Fand ich erstmal nicht so wichtig.

L2 und R2, das die auch L1 und R1 anzeigen ist auch wieder ein Bug. Man oh man. Übrigens ist das nur eine Anzeige, die ich einprogrammiert hab, damit man zu den Keycodes die Namen sieht. Da Android nicht zu allen Keycodes eine Übersetzung in die Konstante bringt. Ich lad es dann nochmal in die Dropbox hoch.
 
Zuletzt bearbeitet:
Das Mappen auf Buchstaben hat geklappt und man könnte damit jetzt schreiben. Doch wie hilft mir das im Spiel?

Anderes Thema: Ein anderes Logitech USB gamepad sendet bei einigen Buttons noch einen Keycode dazu. Z.B. 23 bei button_x oder 4 bei button_a. Das liegt vermutlich an Android. 23 ist bestätigen und 4 ist zurück. Dennoch könnte besonders die Zurück Funktion den Button für Spiele unbenutzbar machen.
 
Das mit den Buchstaben sollte nur ein Test sein, ob der Mapper überhaupt klappt. Der Keycode 23 ist KEYCODE_DPAD_CENTER. Nicht weiter störend.

Wenn ich dich ejtzt also richtig verstehe, sind die 4 Buttons vom PS3 Pad jeweils schon auf A,B,X und Z gemapped richtig?
 
  • Danke
Reaktionen: Benny Alex

Ähnliche Themen

C
Antworten
2
Aufrufe
279
cbpanther1
C
S
Antworten
1
Aufrufe
268
stru65
S
S
Antworten
0
Aufrufe
212
schdrag
S
Zurück
Oben Unten