Controller Mapping, Multiple OS

Anything libgdx related goes here!

Re: Controller Mapping, Multiple OS

Postby AngelusWeb » Wed Aug 21, 2013 11:07 pm

I wholeheartedly support and value your efforts.

I have an idea that might really jump-start this effort -- someone should create a bare-bones Java application that can be distributed to allow various people to test on their systems.
We could collect a list of controller strings/models, OSes, and the various mappings for each combination.

For example, I already added a new category, SNES, for SNES controllers (which can be plugged into an SNES-to-USB adapter) For those old-school thirtysomethings that remember the old SNES...
(Man that makes me feel old! Babies born in 1991 are now old enough to buy beer! But I was in High School in 1991.)

Otherwise, there are too many controllers to buy to get this module complete. Not that I'm not going to have a "Gamepad Config" screen in my game (because I already do!), but I still need this module for things like Axes, D-pad config, etc.
Plus I'm going to use this module for the "default" settings for those who can't be arsed to run the Gamepad Config.
AngelusWeb
 
Posts: 414
Joined: Fri Jul 20, 2012 8:19 pm

Re: Controller Mapping, Multiple OS

Postby wolfieee » Thu Aug 22, 2013 2:37 am

AngelusWeb wrote:I wholeheartedly support and value your efforts.

I have an idea that might really jump-start this effort -- someone should create a bare-bones Java application that can be distributed to allow various people to test on their systems.
We could collect a list of controller strings/models, OSes, and the various mappings for each combination.


You volunteering?

For example, I already added a new category, SNES, for SNES controllers (which can be plugged into an SNES-to-USB adapter) For those old-school thirtysomethings that remember the old SNES...


Please post your Additions!

(Man that makes me feel old! Babies born in 1991 are now old enough to buy beer! But I was in High School in 1991.)


I was out of HS then... had a VIC-20 and a TRS-80 Model I

Otherwise, there are too many controllers to buy to get this module complete. Not that I'm not going to have a "Gamepad Config" screen in my game (because I already do!), but I still need this module for things like Axes, D-pad config, etc.
Plus I'm going to use this module for the "default" settings for those who can't be arsed to run the Gamepad Config.


I would never expect this to become the end-all be-all for controller data. My needs are simple, and I figure some of the more common gamepads input is a big help and one can always say "ONLY tested with XYZ and ABC brand controllers."

Right now I understand (not empiracally) that the XBox gamepad is the more popular non-OUYA controller for OUYAs.
wolfieee
 
Posts: 230
Joined: Sun May 20, 2012 1:59 am

Re: Controller Mapping, Multiple OS

Postby AngelusWeb » Sat Sep 07, 2013 4:33 am

Sorry about the late reply.

I worked for a while to implement a "Gamepad CFG" in my game, and I was pretty sick of controller-related coding. Now I'm just busy in general trying to get my first game released. A lot of worked needed to be done, and still needs to be done.

Anyhow, here is my mapping for the SNES (original) controller with an SNES --> USB adapter, on a 32-bit Linux system (Linux Mint):

Code: Select all
      case SNES:
          do {
             if (OS.platform.equals(OS.Platform.Linux)) {
                BUTTON_O = 0;
                BUTTON_U = 2;
                BUTTON_Y = 3;
                BUTTON_A = 1;
                BUTTON_MENU = -1;
                DPAD_IS_POV = false;
                DPAD_IS_BUTTON = false;
                BUTTON_DPAD_UP = -1;
                BUTTON_DPAD_DOWN = -1;
                BUTTON_DPAD_RIGHT = -1;
                BUTTON_DPAD_LEFT = -1;
                DPAD_IS_AXIS = true;
                AXIS_DPAD_X = 0;
                AXIS_DPAD_Y = 1;
                BUTTON_L1 /* bumper */=  5;
                BUTTON_L2 /* trigger */= -1;
                BUTTON_L3 /* joystick */= -1;
                BUTTON_R1 /* bumper */= 6;
                BUTTON_R2 /* trigger */= -1;
                BUTTON_R3 /* joystick */= -1;
                AXIS_LEFT_X = -1;
                AXIS_LEFT_Y = -1;
                AXIS_LEFT_TRIGGER = -1;
                AXIS_RIGHT_X = -1;
                AXIS_RIGHT_Y = -1;
                AXIS_RIGHT_TRIGGER = -1;
                BUTTON_BACK = -1;
                BUTTON_START = -1;
                break;
             }
AngelusWeb
 
Posts: 414
Joined: Fri Jul 20, 2012 8:19 pm

Re: Controller Mapping, Multiple OS

Postby wolfieee » Sat Sep 07, 2013 10:44 pm

Many thanks. I'll merge it in then edit the original post in a bit.
wolfieee
 
Posts: 230
Joined: Sun May 20, 2012 1:59 am

Re: Controller Mapping, Multiple OS

Postby wolfieee » Sun Sep 08, 2013 12:46 pm

wolfieee wrote:Many thanks. I'll merge it in then edit the original post in a bit.


Done!
wolfieee
 
Posts: 230
Joined: Sun May 20, 2012 1:59 am

Re: Controller Mapping, Multiple OS

Postby AngelusWeb » Fri Sep 13, 2013 10:14 pm

Just out of curiosity, is there a different way to get the OS the game is running on?

Because "Field" isn't supported on the GWT platform.

Code: Select all
   [ERROR] Errors in 'file:/home/matthew/dev/java/mygame/src/com/company/mygame/GamepadMap.java'
      [ERROR] Line 505: The method forName(String) is undefined for the type Class
      [ERROR] Line 506: No source code is available for type java.lang.reflect.Field; did you forget to inherit a required module?
      [ERROR] Line 507: The method getDeclaredField(String) is undefined for the type Class<capture#1-of ?>


Here is the code:

Code: Select all
  public static class OS {
      public static enum Platform {
         Windows, Mac, Unix, Solaris, Other, Android, Ouya, Linux;
      }

      final public static String name;
      final public static Platform platform;
      static {
         name = System.getProperty("os.name").toLowerCase();
         System.out.println("os.name: " + name);
         do {
            if (System.getProperty("java.vm.name").equalsIgnoreCase(
                  "Dalvik")) {
               /*
                * Ouya check first (or it shows up as Android)
                */
               String device = null;
               try {
                  Class<?> buildClass = Class.forName("android.os.Build");
                  Field deviceField = buildClass
                        .getDeclaredField("DEVICE");
                  Object o = deviceField.get(null);
                  if (o != null) {
                     device = o.toString().toLowerCase();
                     System.out.println("Device: " + device);
                  }
               } catch (Exception e) {
               }
               if (device != null) {
                  if (device.contains("ouya")) {
                     platform = Platform.Ouya;
                     break;
                  }
               }
               platform = Platform.Android;
               break;
            }
            if (name.contains("linux")) {
               platform = Platform.Linux;
               break;
            }
            if (name.contains("win")) {
               platform = Platform.Windows;
               break;
            }
            if (name.contains("mac")) {
               platform = Platform.Mac;
               break;
            }
            if (name.contains("nix") || name.contains("nux")
                  || name.contains("aix")) {
               platform = Platform.Unix;
               break;
            }
            if (name.contains("sunos")) {
               platform = Platform.Solaris;
               break;
            }
            platform = Platform.Other;
         } while (false);
      }
   }
}
AngelusWeb
 
Posts: 414
Joined: Fri Jul 20, 2012 8:19 pm

Re: Controller Mapping, Multiple OS

Postby Magnesus » Sat Sep 14, 2013 10:39 am

I can help with two controllers. My button names are correspondent to OUYA buttons. When I find time I will make better list. Data only for OUYA and Android:
Code: Select all
if(controller.getName().contains("Jess Tech"))
      {
         supportedController = true;
         buttonO = 190;
         buttonU = 191;
         buttonY = 189;
         buttonA = 188;
         buttonSystem = 197; // menu button
         buttonOname = "button 1";
         buttonUname = "button 3";
         buttonYname = "button 4";
         buttonAname = "button 2";
         buttonSystemname = "BACK";

         axis1X = 0;
         axis2X = 2;
         axis3X = 4; // dpad
         
         axis1Y = 1;
         axis2Y = 3;
         axis3Y = 5;
               
         trigL1 = 192;
         trigL2 = 193;
         
         trigR1 = 194;
         trigR2 = 195;
         
      }
      else if(controller.getName().contains("GS gamepad"))
      {
         buttonO = 96;
         buttonU = 99;
         buttonY = 100;
         buttonA = 97;
         buttonSystem = 109; // ESCAPE button
                        buttonOname = "button 1";
         buttonUname = "button 2";
         buttonYname = "button 3";
         buttonAname = "button 4";
         buttonSystemname = "ESCAPE";
         
         axis1X = 0;
         axis2X = 2;
         axis3X = 4; // dpadX
         
         axis1Y = 1;
         axis2Y = 3;
         axis3Y = 5; // dpadY
         
         trigL1 = 104;
         trigL2 = 102;
         trigL3 = 300;
         
         trigR1 = 105;
         trigR2 = 103;
         trigR3 = 300;
      }


The first controller is some noname that reports as Jess Tech, the second one is RedSamurai.
Magnesus
 
Posts: 1620
Joined: Sun Sep 25, 2011 3:50 pm

Re: Controller Mapping, Multiple OS

Postby wolfieee » Sun May 01, 2016 5:32 pm

Anyone have shield/android tv controller values?
wolfieee
 
Posts: 230
Joined: Sun May 20, 2012 1:59 am

AndroidTV / Re: Controller Mapping, Multiple OS

Postby wolfieee » Sun May 01, 2016 6:28 pm

ok, this is what I have so far:

Code: Select all
package com.cherokeelessons.common;

import com.badlogic.gdx.Input;

/**
 * Game Controller Mapping Object. Attempts to self adjust values based on OS
 * running on.
 *
 * Usage:
 *
 * GamepadMap ouya_map = new GamepadMap(Model.Ouya); GamepadMap xbox_map = new
 * GamepadMap(Model.Xbox);
 *
 * A value of "-1" for an axis or button indicates no matching event is
 * generated. This is especially an issue for the DPAD which may show up in one
 * of THREE ways for the Xbox as POV, BUTTONS, or AXIS, depending on OS!
 * Additionally, the trigger buttons appear useless when using Windows, both are
 * mapped to the same axis number!
 *
 * The L1 and L2 values are not the same as those found in
 * com.badlogic.gdx.controllers.mappings.Ouya!
 *
 * L1 is supposed to be the bumper and L2 is supposed to be the trigger.
 *
 * It is also ODD that the OUYA insists on generating TWO events for some
 * buttons into differing event handlers! The triggers show up BOTH as AXIS and
 * BUTTONS!
 *
 * EH.. the Nvidia controller reports the LTRIGGER also as BRAKE (axis 23) and
 * RTRIGGER as GAS (axis 22)
 *
 * @author mjoyner
 * @version 0.0.2
 *
 *          Public Domain
 */

public class GamepadMap {
   public static enum Model {
      AndroidTv, Ouya, Xbox, SNES, Keyboard;
   }

   public final int AXIS_DPAD_X;
   public final int AXIS_DPAD_Y;
   public final int AXIS_LEFT_TRIGGER;
   public final int AXIS_BRAKE;
   public final int AXIS_LEFT_X;
   public final int AXIS_LEFT_Y;
   public final int AXIS_RIGHT_TRIGGER;
   public final int AXIS_GAS;
   public final int AXIS_RIGHT_X;
   public final int AXIS_RIGHT_Y;
   public final int BUTTON_B;
   public final int BUTTON_BACK;
   public final int BUTTON_DPAD_DOWN;
   public final int BUTTON_DPAD_LEFT;
   public final int BUTTON_DPAD_RIGHT;
   public final int BUTTON_DPAD_UP;
   public final int BUTTON_L1 /* bumper */;
   public final int BUTTON_L2 /* trigger */;
   public final int BUTTON_L3 /* joystick */;
   public final int BUTTON_MENU;
   public final int BUTTON_A;
   public final int BUTTON_R1 /* bumper */;
   public final int BUTTON_R2 /* trigger */;
   public final int BUTTON_R3 /* joystick */;
   public final int BUTTON_START;
   public final int BUTTON_X;
   public final int BUTTON_Y;
   public final int BUTTON_SEARCH; /* android tv */
   public final boolean DPAD_IS_AXIS;
   public final boolean DPAD_IS_BUTTON;
   public final boolean DPAD_IS_POV;

   public final Model model;

   public GamepadMap(Model model) {
      this.model = model;
      switch (model) {
      case AndroidTv:
         androidTv: {
            BUTTON_A = 96;
            BUTTON_X = 99;
            BUTTON_Y = 100;
            BUTTON_B = 97;
            BUTTON_MENU = -1;
            DPAD_IS_POV = false;
            DPAD_IS_BUTTON = false;
            BUTTON_DPAD_UP = -1;
            BUTTON_DPAD_DOWN = -1;
            BUTTON_DPAD_RIGHT = -1;
            BUTTON_DPAD_LEFT = -1;
            DPAD_IS_AXIS = true;
            AXIS_DPAD_X = 15;
            AXIS_DPAD_Y = 16;
            BUTTON_L1 /* bumper */ = 102;
            BUTTON_L2 /* trigger */ = -1;
            BUTTON_L3 /* joystick */ = 106;
            BUTTON_R1 /* bumper */ = 103;
            BUTTON_R2 /* trigger */ = -1;
            BUTTON_R3 /* joystick */ = 107;
            AXIS_LEFT_X = 0;
            AXIS_LEFT_Y = 1;
            AXIS_LEFT_TRIGGER = 17;
            AXIS_RIGHT_X = 11;
            AXIS_RIGHT_Y = 14;
            AXIS_RIGHT_TRIGGER = 107;
            BUTTON_BACK = -1;
            BUTTON_START = 108;
            BUTTON_SEARCH = 84;
            AXIS_BRAKE = 23;
            AXIS_GAS = 22;
            break androidTv;
         }
         break;
      case Keyboard:
         BUTTON_A = Input.Keys.ENTER;
         BUTTON_X = -1;
         BUTTON_Y = -1;
         BUTTON_B = Input.Keys.BACK;
         BUTTON_MENU = Input.Keys.F1;
         DPAD_IS_POV = false;
         DPAD_IS_BUTTON = true;
         BUTTON_DPAD_UP = Input.Keys.DPAD_UP;
         BUTTON_DPAD_DOWN = Input.Keys.DPAD_DOWN;
         BUTTON_DPAD_RIGHT = Input.Keys.DPAD_RIGHT;
         BUTTON_DPAD_LEFT = Input.Keys.DPAD_LEFT;
         DPAD_IS_AXIS = false;
         AXIS_DPAD_X = -1;
         AXIS_DPAD_Y = -1;
         BUTTON_L1 /* bumper */ = -1;
         BUTTON_L2 /* trigger */ = -1;
         BUTTON_L3 /* joystick */ = -1;
         BUTTON_R1 /* bumper */ = -1;
         BUTTON_R2 /* trigger */ = -1;
         BUTTON_R3 /* joystick */ = -1;
         AXIS_LEFT_X = -1;
         AXIS_LEFT_Y = -1;
         AXIS_LEFT_TRIGGER = -1;
         AXIS_RIGHT_X = -1;
         AXIS_RIGHT_Y = -1;
         AXIS_RIGHT_TRIGGER = -1;
         BUTTON_BACK = Input.Keys.BACK;
         BUTTON_START = -1;
         BUTTON_SEARCH = -1;
         AXIS_BRAKE = -1;
         AXIS_GAS = -1;
         break;
      case Ouya:
      default:
         ouya: {
            if (OS.platform.equals(OS.Platform.Linux)) {
               BUTTON_A = 3;
               BUTTON_X = 4;
               BUTTON_Y = 5;
               BUTTON_B = 6;
               BUTTON_MENU = 17;
               DPAD_IS_POV = false;
               DPAD_IS_BUTTON = true;
               BUTTON_DPAD_UP = 11;
               BUTTON_DPAD_DOWN = 12;
               BUTTON_DPAD_RIGHT = 14;
               BUTTON_DPAD_LEFT = 13;
               DPAD_IS_AXIS = false;
               AXIS_DPAD_X = -1;
               AXIS_DPAD_Y = -1;
               BUTTON_L1 /* bumper */ = 7;
               BUTTON_L2 /* trigger */ = 15;
               BUTTON_L3 /* joystick */ = 9;
               BUTTON_R1 /* bumper */ = 8;
               BUTTON_R2 /* trigger */ = 16;
               BUTTON_R3 /* joystick */ = 10;
               AXIS_LEFT_X = 0;
               AXIS_LEFT_Y = 1;
               AXIS_LEFT_TRIGGER = 2;
               AXIS_RIGHT_X = 3;
               AXIS_RIGHT_Y = 4;
               AXIS_RIGHT_TRIGGER = 5;
               BUTTON_BACK = -1;
               BUTTON_START = 18;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break ouya;
            }
            if (OS.platform.equals(OS.Platform.Windows)) {
               BUTTON_A = 0;
               BUTTON_X = 1;
               BUTTON_Y = 2;
               BUTTON_B = 3;
               BUTTON_MENU = 14;
               DPAD_IS_POV = false;
               DPAD_IS_BUTTON = true;
               BUTTON_DPAD_UP = 8;
               BUTTON_DPAD_DOWN = 9;
               BUTTON_DPAD_RIGHT = 11;
               BUTTON_DPAD_LEFT = 10;
               DPAD_IS_AXIS = false;
               AXIS_DPAD_X = -1;
               AXIS_DPAD_Y = -1;
               BUTTON_L1 /* bumper */ = 4;
               BUTTON_L2 /* trigger */ = -1;
               BUTTON_L3 /* joystick */ = 6;
               BUTTON_R1 /* bumper */ = 5;
               BUTTON_R2 /* trigger */ = -1;
               BUTTON_R3 /* joystick */ = 7;
               AXIS_LEFT_X = 1;
               AXIS_LEFT_Y = 0;
               AXIS_LEFT_TRIGGER = 4;
               AXIS_RIGHT_X = 3;
               AXIS_RIGHT_Y = 2;
               AXIS_RIGHT_TRIGGER = 5;
               BUTTON_BACK = -1;
               BUTTON_START = 15;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break ouya;
            }
            if (OS.platform.equals(OS.Platform.Ouya)) {
               BUTTON_A = 96;
               BUTTON_X = 99;
               BUTTON_Y = 100;
               BUTTON_B = 97;
               BUTTON_MENU = 82;
               DPAD_IS_POV = false;
               DPAD_IS_BUTTON = true;
               BUTTON_DPAD_UP = 19;
               BUTTON_DPAD_DOWN = 20;
               BUTTON_DPAD_RIGHT = 22;
               BUTTON_DPAD_LEFT = 21;
               DPAD_IS_AXIS = false;
               AXIS_DPAD_X = -1;
               AXIS_DPAD_Y = -1;
               BUTTON_L1 /* bumper */ = 102;
               BUTTON_L2 /* trigger */ = 104;
               BUTTON_L3 /* joystick */ = 106;
               BUTTON_R1 /* bumper */ = 103;
               BUTTON_R2 /* trigger */ = 105;
               BUTTON_R3 /* joystick */ = 107;
               AXIS_LEFT_X = 0;
               AXIS_LEFT_Y = 1;
               AXIS_LEFT_TRIGGER = 2;
               AXIS_RIGHT_X = 3;
               AXIS_RIGHT_Y = 4;
               AXIS_RIGHT_TRIGGER = 5;
               BUTTON_BACK = -1;
               BUTTON_START = -1;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break ouya;
            }
            if (OS.platform.equals(OS.Platform.Android)) {
               BUTTON_A = 96;
               BUTTON_X = 97;
               BUTTON_Y = 98;
               BUTTON_B = 99;
               BUTTON_MENU = 107;
               DPAD_IS_POV = false;
               DPAD_IS_BUTTON = true;
               BUTTON_DPAD_UP = 104;
               BUTTON_DPAD_DOWN = 105;
               BUTTON_DPAD_RIGHT = 108;
               BUTTON_DPAD_LEFT = 109;
               DPAD_IS_AXIS = false;
               AXIS_DPAD_X = -1;
               AXIS_DPAD_Y = -1;
               BUTTON_L1 /* bumper */ = 100;
               BUTTON_L2 /* trigger */ = 110;
               BUTTON_L3 /* joystick */ = 102;
               BUTTON_R1 /* bumper */ = 101;
               BUTTON_R2 /* trigger */ = 106;
               BUTTON_R3 /* joystick */ = 103;
               AXIS_LEFT_X = 0;
               AXIS_LEFT_Y = 1;
               AXIS_LEFT_TRIGGER = 2;
               AXIS_RIGHT_X = 3;
               AXIS_RIGHT_Y = 4;
               AXIS_RIGHT_TRIGGER = 5;
               BUTTON_BACK = -1;
               BUTTON_START = 0;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break ouya;
            }
            /* fallback values */
            BUTTON_A = 3;
            BUTTON_X = 4;
            BUTTON_Y = 5;
            BUTTON_B = 6;
            BUTTON_MENU = 17;
            DPAD_IS_POV = false;
            DPAD_IS_BUTTON = true;
            BUTTON_DPAD_UP = 11;
            BUTTON_DPAD_DOWN = 12;
            BUTTON_DPAD_RIGHT = 14;
            BUTTON_DPAD_LEFT = 13;
            DPAD_IS_AXIS = false;
            AXIS_DPAD_X = -1;
            AXIS_DPAD_Y = -1;
            BUTTON_L1 /* bumper */ = 7;
            BUTTON_L2 /* trigger */ = 15;
            BUTTON_L3 /* joystick */ = 9;
            BUTTON_R1 /* bumper */ = 8;
            BUTTON_R2 /* trigger */ = 16;
            BUTTON_R3 /* joystick */ = 10;
            AXIS_LEFT_X = 0;
            AXIS_LEFT_Y = 1;
            AXIS_LEFT_TRIGGER = 2;
            AXIS_RIGHT_X = 3;
            AXIS_RIGHT_Y = 4;
            AXIS_RIGHT_TRIGGER = 5;
            BUTTON_BACK = -1;
            BUTTON_START = 18;
            BUTTON_SEARCH = -1;
            AXIS_BRAKE = -1;
            AXIS_GAS = -1;
         }
         break;
      case Xbox:
         xbox: {
            if (OS.platform.equals(OS.Platform.Linux)) {
               BUTTON_A = 0;
               BUTTON_X = 2;
               BUTTON_Y = 3;
               BUTTON_B = 1;
               BUTTON_MENU = 8;
               DPAD_IS_POV = true;
               DPAD_IS_BUTTON = false;
               BUTTON_DPAD_UP = -1;
               BUTTON_DPAD_DOWN = -1;
               BUTTON_DPAD_RIGHT = -1;
               BUTTON_DPAD_LEFT = -1;
               DPAD_IS_AXIS = false;
               AXIS_DPAD_X = -1;
               AXIS_DPAD_Y = -1;
               BUTTON_L1 /* bumper */ = 4;
               BUTTON_L2 /* trigger */ = -1;
               BUTTON_L3 /* joystick */ = 9;
               BUTTON_R1 /* bumper */ = 5;
               BUTTON_R2 /* trigger */ = -1;
               BUTTON_R3 /* joystick */ = 10;
               AXIS_LEFT_X = 0;
               AXIS_LEFT_Y = 1;
               AXIS_LEFT_TRIGGER = 2;
               AXIS_RIGHT_X = 3;
               AXIS_RIGHT_Y = 4;
               AXIS_RIGHT_TRIGGER = 5;
               BUTTON_BACK = 6;
               BUTTON_START = 7;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break xbox;
            }
            if (OS.platform.equals(OS.Platform.Windows)) {
               BUTTON_A = 0;
               BUTTON_X = 2;
               BUTTON_Y = 3;
               BUTTON_B = 1;
               BUTTON_MENU = 7;
               DPAD_IS_POV = true;
               DPAD_IS_BUTTON = false;
               BUTTON_DPAD_UP = -1;
               BUTTON_DPAD_DOWN = -1;
               BUTTON_DPAD_RIGHT = -1;
               BUTTON_DPAD_LEFT = -1;
               DPAD_IS_AXIS = false;
               AXIS_DPAD_X = -1;
               AXIS_DPAD_Y = -1;
               BUTTON_L1 /* bumper */ = 4;
               BUTTON_L2 /* trigger */ = -1;
               BUTTON_L3 /* joystick */ = 3;
               BUTTON_R1 /* bumper */ = 5;
               BUTTON_R2 /* trigger */ = -1;
               BUTTON_R3 /* joystick */ = 9;
               AXIS_LEFT_X = 1;
               AXIS_LEFT_Y = 0;
               AXIS_LEFT_TRIGGER = 4;
               AXIS_RIGHT_X = 3;
               AXIS_RIGHT_Y = 2;
               AXIS_RIGHT_TRIGGER = 4;// This is for real, same axis # as
                                 // for LEFT trigger!
               BUTTON_BACK = 6;
               BUTTON_START = 7;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break xbox;
            }
            if (OS.platform.equals(OS.Platform.Ouya)) {
               BUTTON_A = 96;
               BUTTON_X = 99;
               BUTTON_Y = 100;
               BUTTON_B = 97;
               BUTTON_MENU = 82;
               DPAD_IS_POV = false;
               DPAD_IS_BUTTON = false;
               BUTTON_DPAD_UP = -1;
               BUTTON_DPAD_DOWN = -1;
               BUTTON_DPAD_RIGHT = -1;
               BUTTON_DPAD_LEFT = -1;
               DPAD_IS_AXIS = true;
               AXIS_DPAD_X = 6;
               AXIS_DPAD_Y = 7;
               BUTTON_L1 /* bumper */ = 102;
               BUTTON_L2 /* trigger */ = -1;
               BUTTON_L3 /* joystick */ = 106;
               BUTTON_R1 /* bumper */ = 103;
               BUTTON_R2 /* trigger */ = -1;
               BUTTON_R3 /* joystick */ = 107;
               AXIS_LEFT_X = 0;
               AXIS_LEFT_Y = 1;
               AXIS_LEFT_TRIGGER = 2;
               AXIS_RIGHT_X = 3;
               AXIS_RIGHT_Y = 4;
               AXIS_RIGHT_TRIGGER = 5;
               BUTTON_BACK = -1;
               BUTTON_START = 108;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break xbox;
            }
            if (OS.platform.equals(OS.Platform.Android)) {
               BUTTON_A = 96;
               BUTTON_X = 99;
               BUTTON_Y = 100;
               BUTTON_B = 97;
               BUTTON_MENU = 108;
               DPAD_IS_POV = false;
               DPAD_IS_BUTTON = false;
               BUTTON_DPAD_UP = -1;// axis(7)
               BUTTON_DPAD_DOWN = -1;// axis(7)
               BUTTON_DPAD_RIGHT = -1;// axis(6)
               BUTTON_DPAD_LEFT = -1;// axis(6)
               DPAD_IS_AXIS = true;
               AXIS_DPAD_X = 6;
               AXIS_DPAD_Y = 7;
               BUTTON_L1 /* bumper */ = 102;
               BUTTON_L2 /* trigger */ = -1; // axis(2)
               BUTTON_L3 /* joystick */ = 106;
               BUTTON_R1 /* bumper */ = 103;
               BUTTON_R2 /* trigger */ = -1; // axis(5)
               BUTTON_R3 /* joystick */ = 107;
               AXIS_LEFT_X = 0;
               AXIS_LEFT_Y = 1;
               AXIS_LEFT_TRIGGER = 2;
               AXIS_RIGHT_X = 3;
               AXIS_RIGHT_Y = 4;
               AXIS_RIGHT_TRIGGER = 5;
               BUTTON_BACK = 109;
               BUTTON_START = 110;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break xbox;
            }
            /* fallback values */
            BUTTON_A = 0;
            BUTTON_X = 2;
            BUTTON_Y = 3;
            BUTTON_B = 1;
            BUTTON_MENU = 8;
            DPAD_IS_POV = true;
            DPAD_IS_BUTTON = false;
            BUTTON_DPAD_UP = -1;
            BUTTON_DPAD_DOWN = -1;
            BUTTON_DPAD_RIGHT = -1;
            BUTTON_DPAD_LEFT = -1;
            DPAD_IS_AXIS = false;
            AXIS_DPAD_X = -1;
            AXIS_DPAD_Y = -1;
            BUTTON_L1 /* bumper */ = 4;
            BUTTON_L2 /* trigger */ = -1;
            BUTTON_L3 /* joystick */ = 9;
            BUTTON_R1 /* bumper */ = 5;
            BUTTON_R2 /* trigger */ = -1;
            BUTTON_R3 /* joystick */ = 10;
            AXIS_LEFT_X = 0;
            AXIS_LEFT_Y = 1;
            AXIS_LEFT_TRIGGER = 2;
            AXIS_RIGHT_X = 3;
            AXIS_RIGHT_Y = 4;
            AXIS_RIGHT_TRIGGER = 5;
            BUTTON_BACK = 6;
            BUTTON_START = 7;
            BUTTON_SEARCH = -1;
            AXIS_BRAKE = -1;
            AXIS_GAS = -1;
         }
         break;
      case SNES:
         snes: {
            if (OS.platform.equals(OS.Platform.Linux)) {
               /* by AngelusWeb » Fri Sep 06, 2013 11:33 pm */
               BUTTON_A = 0;
               BUTTON_X = 2;
               BUTTON_Y = 3;
               BUTTON_B = 1;
               BUTTON_MENU = -1;
               DPAD_IS_POV = false;
               DPAD_IS_BUTTON = false;
               BUTTON_DPAD_UP = -1;
               BUTTON_DPAD_DOWN = -1;
               BUTTON_DPAD_RIGHT = -1;
               BUTTON_DPAD_LEFT = -1;
               DPAD_IS_AXIS = true;
               AXIS_DPAD_X = 0;
               AXIS_DPAD_Y = 1;
               BUTTON_L1 /* bumper */ = 5;
               BUTTON_L2 /* trigger */ = -1;
               BUTTON_L3 /* joystick */ = -1;
               BUTTON_R1 /* bumper */ = 6;
               BUTTON_R2 /* trigger */ = -1;
               BUTTON_R3 /* joystick */ = -1;
               AXIS_LEFT_X = -1;
               AXIS_LEFT_Y = -1;
               AXIS_LEFT_TRIGGER = -1;
               AXIS_RIGHT_X = -1;
               AXIS_RIGHT_Y = -1;
               AXIS_RIGHT_TRIGGER = -1;
               BUTTON_BACK = -1;
               BUTTON_START = -1;
               BUTTON_SEARCH = -1;
               AXIS_BRAKE = -1;
               AXIS_GAS = -1;
               break snes;
            }
            /* default SNES mapping */
            BUTTON_A = 0;
            BUTTON_X = 2;
            BUTTON_Y = 3;
            BUTTON_B = 1;
            BUTTON_MENU = -1;
            DPAD_IS_POV = false;
            DPAD_IS_BUTTON = false;
            BUTTON_DPAD_UP = -1;
            BUTTON_DPAD_DOWN = -1;
            BUTTON_DPAD_RIGHT = -1;
            BUTTON_DPAD_LEFT = -1;
            DPAD_IS_AXIS = true;
            AXIS_DPAD_X = 0;
            AXIS_DPAD_Y = 1;
            BUTTON_L1 /* bumper */ = 5;
            BUTTON_L2 /* trigger */ = -1;
            BUTTON_L3 /* joystick */ = -1;
            BUTTON_R1 /* bumper */ = 6;
            BUTTON_R2 /* trigger */ = -1;
            BUTTON_R3 /* joystick */ = -1;
            AXIS_LEFT_X = -1;
            AXIS_LEFT_Y = -1;
            AXIS_LEFT_TRIGGER = -1;
            AXIS_RIGHT_X = -1;
            AXIS_RIGHT_Y = -1;
            AXIS_RIGHT_TRIGGER = -1;
            BUTTON_BACK = -1;
            BUTTON_START = -1;
            BUTTON_SEARCH = -1;
            AXIS_BRAKE = -1;
            AXIS_GAS = -1;
         }
         break;
      }
   }
}
wolfieee
 
Posts: 230
Joined: Sun May 20, 2012 1:59 am

Re: Controller Mapping, Multiple OS

Postby AngelusWeb » Sun Aug 12, 2018 11:26 pm

You should add MOGA as well.

Code: Select all
      case MOGA:
          do {
             /* fallback values */
             BUTTON_O = 500;
             BUTTON_U = 502;
             BUTTON_Y = 503;
             BUTTON_A = 501;
             BUTTON_MENU = -1;
             DPAD_IS_POV = false;
             DPAD_IS_BUTTON = true;
             BUTTON_DPAD_UP = -1;
             BUTTON_DPAD_DOWN = -1;
             BUTTON_DPAD_RIGHT = -1;
             BUTTON_DPAD_LEFT = -1;
             DPAD_IS_AXIS = false;
             AXIS_DPAD_X = -1;
             AXIS_DPAD_Y = -1;
             BUTTON_L1 /* bumper */=  504;
             BUTTON_L2 /* trigger */= -1;
             BUTTON_L3 /* joystick */= -1;
             BUTTON_R1 /* bumper */= 505;
             BUTTON_R2 /* trigger */= -1;
             BUTTON_R3 /* joystick */= -1;
             AXIS_LEFT_X = 100;
             AXIS_LEFT_Y = 101;
             AXIS_LEFT_TRIGGER = -1;
             AXIS_RIGHT_X = -1;
             AXIS_RIGHT_Y = -1;
             AXIS_RIGHT_TRIGGER = -1;
             BUTTON_BACK = -1;
             BUTTON_START = 510;
          } while (false);
AngelusWeb
 
Posts: 414
Joined: Fri Jul 20, 2012 8:19 pm

Previous

Return to Libgdx

Who is online

Users browsing this forum: shatterblast and 1 guest