From c9bff432f4804bd14b6bf6141fd37c2f970187ed Mon Sep 17 00:00:00 2001 From: Allan Niles Date: Wed, 6 Sep 2023 11:36:57 -0600 Subject: [PATCH] add default keycode controller mappings (#661) * add default keycode controller mapings * add optional keycode maping --- data/emulator.js | 25 ++++++++++++++++++++++++- data/emulator.min.js | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/data/emulator.js b/data/emulator.js index e1a46c9..bce4376 100644 --- a/data/emulator.js +++ b/data/emulator.js @@ -2488,58 +2488,72 @@ class EmulatorJS { 0: { 'value': 'x', 'value2': 'BUTTON_2', + 'keycode': '88', }, 1: { 'value': 's', 'value2': 'BUTTON_4', + 'keycode': '83', }, 2: { 'value': 'v', 'value2': 'SELECT', + 'keycode': '86', }, 3: { 'value': 'enter', 'value2': 'START', + 'keycode': '13', }, 4: { 'value': 'arrowup', 'value2': 'DPAD_UP', + 'keycode': '38', }, 5: { 'value': 'arrowdown', 'value2': 'DPAD_DOWN', + 'keycode': '40', }, 6: { 'value': 'arrowleft', 'value2': 'DPAD_LEFT', + 'keycode': '37', }, 7: { 'value': 'arrowright', 'value2': 'DPAD_RIGHT', + 'keycode': '39', }, 8: { 'value': 'z', 'value2': 'BUTTON_1', + 'keycode': '90', }, 9: { 'value': 'a', 'value2': 'BUTTON_3', + 'keycode': '65', }, 10: { 'value': 'q', 'value2': 'LEFT_TOP_SHOULDER', + 'keycode': '81', }, 11: { 'value': 'e', 'value2': 'RIGHT_TOP_SHOULDER', + 'keycode': '69', }, 12: { 'value': 'e', 'value2': 'LEFT_BOTTOM_SHOULDER', + 'keycode': '69', }, 13: { 'value': 'w', 'value2': 'RIGHT_BOTTOM_SHOULDER', + 'keycode': '87', }, 14: { 'value2': 'LEFT_STICK', @@ -2550,34 +2564,42 @@ class EmulatorJS { 16: { 'value': 'h', 'value2': 'LEFT_STICK_X:+1', + 'keycode': '72' }, 17: { 'value': 'f', 'value2': 'LEFT_STICK_X:-1', + 'keycode': '70' }, 18: { 'value': 'g', 'value2': 'LEFT_STICK_Y:+1', + 'keycode': '71' }, 19: { 'value': 't', 'value2': 'LEFT_STICK_Y:-1', + 'keycode': '84' }, 20: { 'value': 'l', 'value2': 'RIGHT_STICK_X:+1', + 'keycode': '76' }, 21: { 'value': 'j', 'value2': 'RIGHT_STICK_X:-1', + 'keycode': '74' }, 22: { 'value': 'k', 'value2': 'RIGHT_STICK_Y:+1', + 'keycode': '75' }, 23: { 'value': 'i', 'value2': 'RIGHT_STICK_Y:-1', + 'keycode': '73' }, 24: {}, 25: {}, @@ -2601,6 +2623,7 @@ class EmulatorJS { this.controls[player][num] = {}; } this.controls[player][num].value = e.key.toLowerCase(); + this.controls[player][num].keycode = e.keyCode; this.controlPopup.parentElement.parentElement.setAttribute("hidden", ""); this.checkGamepadInputs(); this.saveSettings(); @@ -2611,7 +2634,7 @@ class EmulatorJS { const special = [16, 17, 18, 19, 20, 21, 22, 23]; for (let i=0; i<4; i++) { 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))); } } diff --git a/data/emulator.min.js b/data/emulator.min.js index c22c649..fc35e54 100644 --- a/data/emulator.min.js +++ b/data/emulator.min.js @@ -1 +1 @@ -!function(){var e,t;e=window,t=function(){return n=[function(e,t,n){"use strict";n.r(t);function b(e,t){var n=t.x-e.x,t=t.y-e.y;return Math.sqrt(n*n+t*t)}function _(e){return e*(Math.PI/180)}function o(e){f.has(e)&&clearTimeout(f.get(e)),f.set(e,setTimeout(e,100))}function a(e,t,n){for(var i,o=t.split(/[ ,]+/g),a=0;athis.options.threshold){var r,l={};for(r in this.direction)this.direction.hasOwnProperty(r)&&(l[r]=this.direction[r]);var c={};for(r in this.direction={x:n,y:i,angle:t},e.direction=this.direction,l)l[r]===this.direction[r]&&(c[r]=!0);if(c.x&&c.y&&c.angle)return e;c.x&&c.y||this.trigger("plain",e),c.x||this.trigger("plain:"+n,e),c.y||this.trigger("plain:"+i,e),c.angle||this.trigger("dir dir:"+t,e)}else this.resetDirection();return e};var x=w;function E(e,t){this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=e,this.id=E.id,E.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1,follow:!1},this.config(t),"static"!==this.options.mode&&"semi"!==this.options.mode||(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1);e=getComputedStyle(this.options.zone.parentElement);return e&&"flex"===e.display&&(this.parentIsFlex=!0),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}E.prototype=new m,(E.constructor=E).id=0,E.prototype.prepareNipples=function(){var i=this.nipples;i.on=this.on.bind(this),i.off=this.off.bind(this),i.options=this.options,i.destroy=this.destroy.bind(this),i.ids=this.ids,i.id=this.id,i.processOnMove=this.processOnMove.bind(this),i.processOnEnd=this.processOnEnd.bind(this),i.get=function(e){if(void 0===e)return i[0];for(var t=0,n=i.length;t