Allow the custom controller config to override any other map
By using the compatibility mode switch, the custom key and identifier assigned to a specific controller should be the first items used to create the key mappings. At worst, this will provide basic button and dpad support if no other detection is possible for the specific controller device.
This commit is contained in:
parent
431c6ee014
commit
5ad26263f9
|
@ -215,109 +215,104 @@ public class GL2JNIActivity extends Activity {
|
|||
Integer playerNum = deviceDescriptor_PlayerNum
|
||||
.get(deviceId_deviceDescriptor.get(joys[i]));
|
||||
|
||||
String[] players = getResources().getStringArray(R.array.controllers);
|
||||
String id = players[i].substring(
|
||||
players[i].lastIndexOf(" "), players[i].length());
|
||||
boolean compat = prefs.getBoolean("controller_compat" + id, false);
|
||||
if (playerNum != null) {
|
||||
String[] players = getResources().getStringArray(R.array.controllers);
|
||||
String id = "_" + players[playerNum].substring(
|
||||
players[playerNum].lastIndexOf(" ") + 1, players[playerNum].length());
|
||||
boolean compat = prefs.getBoolean("controller_compat" + id, false);
|
||||
if (!compat) {
|
||||
if (prefs.getBoolean("modified_key_layout" + id, false)) {
|
||||
map[playerNum] = setModifiedKeys(playerNum);
|
||||
|
||||
if (playerNum != null && !compat) {
|
||||
if (prefs.getBoolean("modified_key_layout" + id, false)) {
|
||||
map[playerNum] = setModifiedKeys(playerNum);
|
||||
custom[playerNum] = true;
|
||||
|
||||
custom[playerNum] = true;
|
||||
|
||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||
.equals("Sony PLAYSTATION(R)3 Controller")) {
|
||||
map[playerNum] = new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||
.equals("Sony PLAYSTATION(R)3 Controller")) {
|
||||
map[playerNum] = new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
|
||||
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
|
||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||
OuyaController.BUTTON_R1, key_CONT_START
|
||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||
OuyaController.BUTTON_R1, key_CONT_START
|
||||
|
||||
};
|
||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||
.equals("Microsoft X-Box 360 pad")) {
|
||||
map[playerNum] = new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
};
|
||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||
.equals("Microsoft X-Box 360 pad")) {
|
||||
map[playerNum] = new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
|
||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||
OuyaController.BUTTON_R1, key_CONT_START
|
||||
};
|
||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||
OuyaController.BUTTON_R1, key_CONT_START
|
||||
};
|
||||
|
||||
xbox[playerNum] = true;
|
||||
xbox[playerNum] = true;
|
||||
|
||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||
.contains("NVIDIA Corporation NVIDIA Controller")) {
|
||||
map[playerNum] = new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||
.contains("NVIDIA Corporation NVIDIA Controller")) {
|
||||
map[playerNum] = new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
|
||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||
OuyaController.BUTTON_R1, key_CONT_START
|
||||
};
|
||||
nVidia[playerNum] = true;
|
||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||
OuyaController.BUTTON_R1, key_CONT_START
|
||||
};
|
||||
nVidia[playerNum] = true;
|
||||
|
||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||
} else if (!moga.isActive[playerNum]) { // Ouya controller
|
||||
map[playerNum] = new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||
} else if (!moga.isActive[playerNum]) { // Ouya controller
|
||||
map[playerNum] = new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
|
||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||
OuyaController.BUTTON_R1, key_CONT_START
|
||||
};
|
||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||
OuyaController.BUTTON_R1, key_CONT_START
|
||||
};
|
||||
}
|
||||
} else {
|
||||
getCompatibilityMap(playerNum, id);
|
||||
}
|
||||
} else {
|
||||
runCompatibilityCheck(i, id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (joys.length == 0) {
|
||||
runCompatibilityMode();
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
String[] players = getResources().getStringArray(R.array.controllers);
|
||||
String id = players[i].substring(
|
||||
players[i].lastIndexOf(" "), players[i].length());
|
||||
if (prefs.getBoolean("controller_compat" + id, false)) {
|
||||
runCompatibilityCheck(i, id);
|
||||
}
|
||||
}
|
||||
runCompatibilityMode();
|
||||
}
|
||||
|
||||
// When viewing a resource, pass its URI to the native code for opening
|
||||
|
@ -333,7 +328,18 @@ public class GL2JNIActivity extends Activity {
|
|||
"Press the back button for a menu", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
private void runCompatibilityCheck(int playerNum, String id) {
|
||||
private void runCompatibilityMode() {
|
||||
for (int n = 0; n < 4; n++) {
|
||||
String[] players = getResources().getStringArray(R.array.controllers);
|
||||
String id = "_" + players[n].substring(
|
||||
players[n].lastIndexOf(" ") + 1, players[n].length());
|
||||
if (prefs.getBoolean("controller_compat" + id, false)) {
|
||||
getCompatibilityMap(n, id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void getCompatibilityMap(int playerNum, String id) {
|
||||
name[playerNum] = prefs.getInt("controller" + id, -1);
|
||||
if (name[playerNum] != -1) {
|
||||
map[playerNum] = setModifiedKeys(playerNum);
|
||||
|
@ -346,8 +352,8 @@ public class GL2JNIActivity extends Activity {
|
|||
|
||||
private int[] setModifiedKeys(int player) {
|
||||
String[] players = getResources().getStringArray(R.array.controllers);
|
||||
String id = players[player].substring(
|
||||
players[player].lastIndexOf(" "), players[player].length());
|
||||
String id = "_" + players[player].substring(
|
||||
players[player].lastIndexOf(" ") + 1, players[player].length());
|
||||
return new int[] {
|
||||
prefs.getInt("a_button" + id, OuyaController.BUTTON_O), key_CONT_A,
|
||||
prefs.getInt("b_button" + id, OuyaController.BUTTON_A), key_CONT_B,
|
||||
|
@ -491,12 +497,12 @@ public class GL2JNIActivity extends Activity {
|
|||
}
|
||||
|
||||
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
||||
Integer playerNum = 0;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
|
||||
Integer playerNum = Arrays.asList(name).indexOf(event.getDeviceId());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD && playerNum == -1) {
|
||||
playerNum = deviceDescriptor_PlayerNum
|
||||
.get(deviceId_deviceDescriptor.get(event.getDeviceId()));
|
||||
} else {
|
||||
playerNum = Arrays.asList(name).indexOf(event.getDeviceId());
|
||||
playerNum = 0;
|
||||
}
|
||||
|
||||
return handle_key(playerNum, keyCode, false)
|
||||
|
@ -504,12 +510,12 @@ public class GL2JNIActivity extends Activity {
|
|||
}
|
||||
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
Integer playerNum = 0;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
|
||||
Integer playerNum = Arrays.asList(name).indexOf(event.getDeviceId());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD && playerNum == -1) {
|
||||
playerNum = deviceDescriptor_PlayerNum
|
||||
.get(deviceId_deviceDescriptor.get(event.getDeviceId()));
|
||||
} else {
|
||||
playerNum = Arrays.asList(name).indexOf(event.getDeviceId());
|
||||
playerNum = 0;
|
||||
}
|
||||
|
||||
if (handle_key(playerNum, keyCode, true)) {
|
||||
|
|
|
@ -76,12 +76,12 @@ public class InputModFragment extends Fragment {
|
|||
public void onItemSelected(AdapterView<?> parent, View view,
|
||||
int pos, long id) {
|
||||
String selection = parent.getItemAtPosition(pos).toString();
|
||||
player = selection.substring(selection.lastIndexOf(" "),
|
||||
player = "_" + selection.substring(selection.lastIndexOf(" ") + 1,
|
||||
selection.length());
|
||||
}
|
||||
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
|
||||
//player = "A";
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -394,9 +394,9 @@ public class InputModFragment extends Fragment {
|
|||
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
||||
public boolean onKey(DialogInterface dialog, int keyCode,
|
||||
KeyEvent event) {
|
||||
dialog.dismiss();
|
||||
mPrefs.edit()
|
||||
.putInt("controller" + player, event.getDeviceId());
|
||||
.putInt("controller" + player, event.getDeviceId()).commit();
|
||||
dialog.dismiss();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue