add default keycode controller mappings (#661)

* add default keycode controller mapings
* add optional keycode maping
This commit is contained in:
Allan Niles 2023-09-06 11:36:57 -06:00
parent 20bb8fe7cb
commit c9bff432f4
2 changed files with 25 additions and 2 deletions

View file

@ -2488,58 +2488,72 @@ class EmulatorJS {
0: { 0: {
'value': 'x', 'value': 'x',
'value2': 'BUTTON_2', 'value2': 'BUTTON_2',
'keycode': '88',
}, },
1: { 1: {
'value': 's', 'value': 's',
'value2': 'BUTTON_4', 'value2': 'BUTTON_4',
'keycode': '83',
}, },
2: { 2: {
'value': 'v', 'value': 'v',
'value2': 'SELECT', 'value2': 'SELECT',
'keycode': '86',
}, },
3: { 3: {
'value': 'enter', 'value': 'enter',
'value2': 'START', 'value2': 'START',
'keycode': '13',
}, },
4: { 4: {
'value': 'arrowup', 'value': 'arrowup',
'value2': 'DPAD_UP', 'value2': 'DPAD_UP',
'keycode': '38',
}, },
5: { 5: {
'value': 'arrowdown', 'value': 'arrowdown',
'value2': 'DPAD_DOWN', 'value2': 'DPAD_DOWN',
'keycode': '40',
}, },
6: { 6: {
'value': 'arrowleft', 'value': 'arrowleft',
'value2': 'DPAD_LEFT', 'value2': 'DPAD_LEFT',
'keycode': '37',
}, },
7: { 7: {
'value': 'arrowright', 'value': 'arrowright',
'value2': 'DPAD_RIGHT', 'value2': 'DPAD_RIGHT',
'keycode': '39',
}, },
8: { 8: {
'value': 'z', 'value': 'z',
'value2': 'BUTTON_1', 'value2': 'BUTTON_1',
'keycode': '90',
}, },
9: { 9: {
'value': 'a', 'value': 'a',
'value2': 'BUTTON_3', 'value2': 'BUTTON_3',
'keycode': '65',
}, },
10: { 10: {
'value': 'q', 'value': 'q',
'value2': 'LEFT_TOP_SHOULDER', 'value2': 'LEFT_TOP_SHOULDER',
'keycode': '81',
}, },
11: { 11: {
'value': 'e', 'value': 'e',
'value2': 'RIGHT_TOP_SHOULDER', 'value2': 'RIGHT_TOP_SHOULDER',
'keycode': '69',
}, },
12: { 12: {
'value': 'e', 'value': 'e',
'value2': 'LEFT_BOTTOM_SHOULDER', 'value2': 'LEFT_BOTTOM_SHOULDER',
'keycode': '69',
}, },
13: { 13: {
'value': 'w', 'value': 'w',
'value2': 'RIGHT_BOTTOM_SHOULDER', 'value2': 'RIGHT_BOTTOM_SHOULDER',
'keycode': '87',
}, },
14: { 14: {
'value2': 'LEFT_STICK', 'value2': 'LEFT_STICK',
@ -2550,34 +2564,42 @@ class EmulatorJS {
16: { 16: {
'value': 'h', 'value': 'h',
'value2': 'LEFT_STICK_X:+1', 'value2': 'LEFT_STICK_X:+1',
'keycode': '72'
}, },
17: { 17: {
'value': 'f', 'value': 'f',
'value2': 'LEFT_STICK_X:-1', 'value2': 'LEFT_STICK_X:-1',
'keycode': '70'
}, },
18: { 18: {
'value': 'g', 'value': 'g',
'value2': 'LEFT_STICK_Y:+1', 'value2': 'LEFT_STICK_Y:+1',
'keycode': '71'
}, },
19: { 19: {
'value': 't', 'value': 't',
'value2': 'LEFT_STICK_Y:-1', 'value2': 'LEFT_STICK_Y:-1',
'keycode': '84'
}, },
20: { 20: {
'value': 'l', 'value': 'l',
'value2': 'RIGHT_STICK_X:+1', 'value2': 'RIGHT_STICK_X:+1',
'keycode': '76'
}, },
21: { 21: {
'value': 'j', 'value': 'j',
'value2': 'RIGHT_STICK_X:-1', 'value2': 'RIGHT_STICK_X:-1',
'keycode': '74'
}, },
22: { 22: {
'value': 'k', 'value': 'k',
'value2': 'RIGHT_STICK_Y:+1', 'value2': 'RIGHT_STICK_Y:+1',
'keycode': '75'
}, },
23: { 23: {
'value': 'i', 'value': 'i',
'value2': 'RIGHT_STICK_Y:-1', 'value2': 'RIGHT_STICK_Y:-1',
'keycode': '73'
}, },
24: {}, 24: {},
25: {}, 25: {},
@ -2601,6 +2623,7 @@ class EmulatorJS {
this.controls[player][num] = {}; this.controls[player][num] = {};
} }
this.controls[player][num].value = e.key.toLowerCase(); this.controls[player][num].value = e.key.toLowerCase();
this.controls[player][num].keycode = e.keyCode;
this.controlPopup.parentElement.parentElement.setAttribute("hidden", ""); this.controlPopup.parentElement.parentElement.setAttribute("hidden", "");
this.checkGamepadInputs(); this.checkGamepadInputs();
this.saveSettings(); this.saveSettings();
@ -2611,7 +2634,7 @@ class EmulatorJS {
const special = [16, 17, 18, 19, 20, 21, 22, 23]; const special = [16, 17, 18, 19, 20, 21, 22, 23];
for (let i=0; i<4; i++) { for (let i=0; i<4; i++) {
for (let j=0; j<30; j++) { for (let j=0; j<30; j++) {
if (this.controls[i][j] && this.controls[i][j].value === e.key.toLowerCase()) { if (this.controls[i][j] && (this.controls[i][j].value === e.key.toLowerCase() || this.controls[i][j].keycode === e.keyCode)) {
this.gameManager.simulateInput(i, j, (e.type === 'keyup' ? 0 : (special.includes(j) ? 0x7fff : 1))); this.gameManager.simulateInput(i, j, (e.type === 'keyup' ? 0 : (special.includes(j) ? 0x7fff : 1)));
} }
} }

File diff suppressed because one or more lines are too long