Ipega Controller Mappings

Category: 

Der Ipega Bluetooth Controller ist ein preiswerter Controller für fast alle Bluetooth fähigen Geräte. Insbesondere ist er für Smartphones gedacht, da er eine Halterung für diese enthält. Da der Controller verschiedene Betriebsmodi hat und sich auf verschiedenen Betriebssystemen unterschiedlich verhält, werde ich darauf etwas genauer eingehen. Schließlich gebe ich euch noch ein passendes Mapping für LibGDX mit.

Betriebsmodi

Der iPega Bluetooth Game Controller unterstützt vier verschiedene Betriebsmodi. Je nach Modus werden Tasten und Sticks anders gemapped und haben dementsprechend ein anderes Verhalten.

  • Keyboard (Home + A): Sämtliche Tasten und Sticks werden als Tastendrücke aufgefasst.
  • iCade (Home + B): Der rechte Stick wird gar nicht genutzt und (fast) alle anderen Komponenten feuern jeweils beim drücken und loslassen ein Pressed und Released Event. Wenn man z.B. A drückt, werden beide Events jeweils mit dem Wert 36 gefeuert und beim loslassen von A werden beide Events mit dem Wert 46 gefeuert.
  • Gamepad (Home + X): Wichtigster Modus, da die Sticks als analoge Achsen betrachtet werden und die Buttons als einfache Tasten genutzt werden.
  • Unbekannt (Home + Y): Dieser Modus will bei mir nicht laufen. In diesem Modus wird ein Pairing Code angezeigt, welchen man einfach bestätigen soll. Im Anschluss wird der Controller zwar als gekoppelt angezeigt, jedoch blinkt er fröhlich weiter und kann nicht genutzt werden.

Verbindung herstellen

Bevor man den Controller nutzen kann, muss man ein Pairing durchführen. Dazu aktiviert ihr bei eurem Smartphone und/oder PC Bluetooth und startet dann den Controller.
Dazu haltet ihr die Taste für den jeweiligen Modus gedrückt und drückt zusätzlich den großen Home Button. Nun ist der Controller bereit fürs Pairing. Nach kurzer Zeit sollte er auf eurem Smartphone (oder PC) in einer Liste erscheinen.

Wenn ihr z.B. den Gamepad Modus nutzen wollt, drückt ihr HOME und X.


Das Icon kann sich je nach Modus unterscheiden.

Wählt dann den Ipega Controller aus und wartet bis er als Verbunden angezeigt wird. Jetzt könnt ihr ihn in Spielen auch benutzen. Falls ihr mit dem Modus nicht zufrieden sein, müsst ihr das Pairing wieder aufheben und euch neu Verbinden.

LibGDX Mapping (Android)

Im folgenden Code Snippet findet ihr ein Mapping für LibGDX. Insgesamt sind Achsen und Buttons ziemlich straight forward, einzig die Tasten L1 und R1 sind etwas anders. Denn diese werden nicht nur als Tasten, sondern zusätzlich auch als Achsen erkannt. Leider jedoch nicht als analoge Achsen, sondern als diskrete, welche entweder 0 oder 1 sind.

//Mapping for Ipega Gamepad Mode (Home + X)
public class IpegaAndroid {
  public static final int BUTTON_A = 96;
  public static final int BUTTON_B = 97;
  public static final int BUTTON_X = 99;
  public static final int BUTTON_Y = 100;

  public static final int BUTTON_SELECT = 109;
  public static final int BUTTON_START = 108;

  public static final int BUTTON_L1 = 104;
  public static final int BUTTON_L2 = 102;
  public static final int BUTTON_L3 = 106;
  public static final int BUTTON_R1 = 105;
  public static final int BUTTON_R2 = 103;
  public static final int BUTTON_R3 = 107;

  public static final int BUTTON_MEDIA_MINUS = 25;
  public static final int BUTTON_MEDIA_START = 88;
  public static final int BUTTON_MEDIA_PLAY = 85;
  public static final int BUTTON_MEDIA_END = 87;
  public static final int BUTTON_MEDIA_PLUS = 24;

  public static final int AXIS_LEFT_X = 0;
  public static final int AXIS_LEFT_Y = 1;
  public static final int AXIS_RIGHT_X = 2;
  public static final int AXIS_RIGHT_Y = 3;
  public static final int AXIS_L1 = 5;
  public static final int AXIS_R1 = 4;
  public static final int AXIS_DPAD_X = 6;
  public static final int AXIS_DPAD_Y = 7;
}

LibGDX Mapping (PC)

Auch das PC Mapping ist ziemlich simpel, allerdings können wir hier die Media Keys nicht verwenden, da diese von Windows direkt abgefangen werden und an Media Programme, wie z.B. VLC oder Spotify gehen.

//Mapping for Ipega Gamepad Mode (Home + X)
public class IpegaPC {
  public static final int BUTTON_A = 0;
  public static final int BUTTON_B = 1;
  public static final int BUTTON_X = 3;
  public static final int BUTTON_Y = 4;

  public static final int BUTTON_SELECT = 10;
  public static final int BUTTON_START = 11;

  public static final int BUTTON_L1 = 8;
  public static final int BUTTON_L2 = 6;
  public static final int BUTTON_L3 = 13;
  public static final int BUTTON_R1 = 9;
  public static final int BUTTON_R2 = 7;
  public static final int BUTTON_R3 = 14;

  public static final int AXIS_LEFT_X = 3;
  public static final int AXIS_LEFT_Y = 2;
  public static final int AXIS_RIGHT_X = 1;
  public static final int AXIS_RIGHT_Y = 0;

  public static final int POV = 0;
}

Hier endet das eigentliche Tutorial. Auf der nachfolgenden Seite findet ihr Mappings für die beiden anderen Modi unter Android. Grundsätzlich sind diese zwar nicht zu empfehlen, aber vielleicht benötigt sie ja doch jemand unter euch.