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
|
Integer playerNum = deviceDescriptor_PlayerNum
|
||||||
.get(deviceId_deviceDescriptor.get(joys[i]));
|
.get(deviceId_deviceDescriptor.get(joys[i]));
|
||||||
|
|
||||||
String[] players = getResources().getStringArray(R.array.controllers);
|
if (playerNum != null) {
|
||||||
String id = players[i].substring(
|
String[] players = getResources().getStringArray(R.array.controllers);
|
||||||
players[i].lastIndexOf(" "), players[i].length());
|
String id = "_" + players[playerNum].substring(
|
||||||
boolean compat = prefs.getBoolean("controller_compat" + id, false);
|
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) {
|
custom[playerNum] = true;
|
||||||
if (prefs.getBoolean("modified_key_layout" + id, false)) {
|
|
||||||
map[playerNum] = setModifiedKeys(playerNum);
|
|
||||||
|
|
||||||
custom[playerNum] = true;
|
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||||
|
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
.equals("Sony PLAYSTATION(R)3 Controller")) {
|
||||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
map[playerNum] = new int[] {
|
||||||
.equals("Sony PLAYSTATION(R)3 Controller")) {
|
OuyaController.BUTTON_O, key_CONT_A,
|
||||||
map[playerNum] = new int[] {
|
OuyaController.BUTTON_A, key_CONT_B,
|
||||||
OuyaController.BUTTON_O, key_CONT_A,
|
OuyaController.BUTTON_U, key_CONT_X,
|
||||||
OuyaController.BUTTON_A, key_CONT_B,
|
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||||
OuyaController.BUTTON_U, key_CONT_X,
|
|
||||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
|
||||||
|
|
||||||
|
|
||||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||||
OuyaController.BUTTON_R1, key_CONT_START
|
OuyaController.BUTTON_R1, key_CONT_START
|
||||||
|
|
||||||
};
|
};
|
||||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||||
.equals("Microsoft X-Box 360 pad")) {
|
.equals("Microsoft X-Box 360 pad")) {
|
||||||
map[playerNum] = new int[] {
|
map[playerNum] = new int[] {
|
||||||
OuyaController.BUTTON_O, key_CONT_A,
|
OuyaController.BUTTON_O, key_CONT_A,
|
||||||
OuyaController.BUTTON_A, key_CONT_B,
|
OuyaController.BUTTON_A, key_CONT_B,
|
||||||
OuyaController.BUTTON_U, key_CONT_X,
|
OuyaController.BUTTON_U, key_CONT_X,
|
||||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||||
|
|
||||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||||
OuyaController.BUTTON_R1, key_CONT_START
|
OuyaController.BUTTON_R1, key_CONT_START
|
||||||
};
|
};
|
||||||
|
|
||||||
xbox[playerNum] = true;
|
xbox[playerNum] = true;
|
||||||
|
|
||||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||||
} else if (InputDevice.getDevice(joys[i]).getName()
|
} else if (InputDevice.getDevice(joys[i]).getName()
|
||||||
.contains("NVIDIA Corporation NVIDIA Controller")) {
|
.contains("NVIDIA Corporation NVIDIA Controller")) {
|
||||||
map[playerNum] = new int[] {
|
map[playerNum] = new int[] {
|
||||||
OuyaController.BUTTON_O, key_CONT_A,
|
OuyaController.BUTTON_O, key_CONT_A,
|
||||||
OuyaController.BUTTON_A, key_CONT_B,
|
OuyaController.BUTTON_A, key_CONT_B,
|
||||||
OuyaController.BUTTON_U, key_CONT_X,
|
OuyaController.BUTTON_U, key_CONT_X,
|
||||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||||
|
|
||||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||||
OuyaController.BUTTON_R1, key_CONT_START
|
OuyaController.BUTTON_R1, key_CONT_START
|
||||||
};
|
};
|
||||||
nVidia[playerNum] = true;
|
nVidia[playerNum] = true;
|
||||||
|
|
||||||
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
globalLS_X[playerNum] = previousLS_X[playerNum] = 0.0f;
|
||||||
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
globalLS_Y[playerNum] = previousLS_Y[playerNum] = 0.0f;
|
||||||
} else if (!moga.isActive[playerNum]) { // Ouya controller
|
} else if (!moga.isActive[playerNum]) { // Ouya controller
|
||||||
map[playerNum] = new int[] {
|
map[playerNum] = new int[] {
|
||||||
OuyaController.BUTTON_O, key_CONT_A,
|
OuyaController.BUTTON_O, key_CONT_A,
|
||||||
OuyaController.BUTTON_A, key_CONT_B,
|
OuyaController.BUTTON_A, key_CONT_B,
|
||||||
OuyaController.BUTTON_U, key_CONT_X,
|
OuyaController.BUTTON_U, key_CONT_X,
|
||||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||||
|
|
||||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
OuyaController.BUTTON_MENU, key_CONT_START,
|
OuyaController.BUTTON_MENU, key_CONT_START,
|
||||||
OuyaController.BUTTON_R1, key_CONT_START
|
OuyaController.BUTTON_R1, key_CONT_START
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
getCompatibilityMap(playerNum, id);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
runCompatibilityCheck(i, id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (joys.length == 0) {
|
||||||
|
runCompatibilityMode();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < 4; i++) {
|
runCompatibilityMode();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// When viewing a resource, pass its URI to the native code for opening
|
// 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();
|
"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);
|
name[playerNum] = prefs.getInt("controller" + id, -1);
|
||||||
if (name[playerNum] != -1) {
|
if (name[playerNum] != -1) {
|
||||||
map[playerNum] = setModifiedKeys(playerNum);
|
map[playerNum] = setModifiedKeys(playerNum);
|
||||||
|
@ -346,8 +352,8 @@ public class GL2JNIActivity extends Activity {
|
||||||
|
|
||||||
private int[] setModifiedKeys(int player) {
|
private int[] setModifiedKeys(int player) {
|
||||||
String[] players = getResources().getStringArray(R.array.controllers);
|
String[] players = getResources().getStringArray(R.array.controllers);
|
||||||
String id = players[player].substring(
|
String id = "_" + players[player].substring(
|
||||||
players[player].lastIndexOf(" "), players[player].length());
|
players[player].lastIndexOf(" ") + 1, players[player].length());
|
||||||
return new int[] {
|
return new int[] {
|
||||||
prefs.getInt("a_button" + id, OuyaController.BUTTON_O), key_CONT_A,
|
prefs.getInt("a_button" + id, OuyaController.BUTTON_O), key_CONT_A,
|
||||||
prefs.getInt("b_button" + id, OuyaController.BUTTON_A), key_CONT_B,
|
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) {
|
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
||||||
Integer playerNum = 0;
|
Integer playerNum = Arrays.asList(name).indexOf(event.getDeviceId());
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD && playerNum == -1) {
|
||||||
playerNum = deviceDescriptor_PlayerNum
|
playerNum = deviceDescriptor_PlayerNum
|
||||||
.get(deviceId_deviceDescriptor.get(event.getDeviceId()));
|
.get(deviceId_deviceDescriptor.get(event.getDeviceId()));
|
||||||
} else {
|
} else {
|
||||||
playerNum = Arrays.asList(name).indexOf(event.getDeviceId());
|
playerNum = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return handle_key(playerNum, keyCode, false)
|
return handle_key(playerNum, keyCode, false)
|
||||||
|
@ -504,12 +510,12 @@ public class GL2JNIActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
Integer playerNum = 0;
|
Integer playerNum = Arrays.asList(name).indexOf(event.getDeviceId());
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD && playerNum == -1) {
|
||||||
playerNum = deviceDescriptor_PlayerNum
|
playerNum = deviceDescriptor_PlayerNum
|
||||||
.get(deviceId_deviceDescriptor.get(event.getDeviceId()));
|
.get(deviceId_deviceDescriptor.get(event.getDeviceId()));
|
||||||
} else {
|
} else {
|
||||||
playerNum = Arrays.asList(name).indexOf(event.getDeviceId());
|
playerNum = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (handle_key(playerNum, keyCode, true)) {
|
if (handle_key(playerNum, keyCode, true)) {
|
||||||
|
|
|
@ -76,12 +76,12 @@ public class InputModFragment extends Fragment {
|
||||||
public void onItemSelected(AdapterView<?> parent, View view,
|
public void onItemSelected(AdapterView<?> parent, View view,
|
||||||
int pos, long id) {
|
int pos, long id) {
|
||||||
String selection = parent.getItemAtPosition(pos).toString();
|
String selection = parent.getItemAtPosition(pos).toString();
|
||||||
player = selection.substring(selection.lastIndexOf(" "),
|
player = "_" + selection.substring(selection.lastIndexOf(" ") + 1,
|
||||||
selection.length());
|
selection.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onNothingSelected(AdapterView<?> arg0) {
|
public void onNothingSelected(AdapterView<?> arg0) {
|
||||||
|
//player = "A";
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -394,9 +394,9 @@ public class InputModFragment extends Fragment {
|
||||||
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
||||||
public boolean onKey(DialogInterface dialog, int keyCode,
|
public boolean onKey(DialogInterface dialog, int keyCode,
|
||||||
KeyEvent event) {
|
KeyEvent event) {
|
||||||
dialog.dismiss();
|
|
||||||
mPrefs.edit()
|
mPrefs.edit()
|
||||||
.putInt("controller" + player, event.getDeviceId());
|
.putInt("controller" + player, event.getDeviceId()).commit();
|
||||||
|
dialog.dismiss();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue