@@ -823,13 +823,16 @@ var LibrarySDL = {
823823
824824 lookupKeyCodeForEvent ( event ) {
825825 var code = event . keyCode ;
826- if ( code >= 65 && code <= 90 ) {
826+ if ( code >= 65 && code <= 90 ) { // ASCII A-Z
827827 code += 32 ; // make lowercase for SDL
828828 } else {
829+ // Look up DOM code in the keyCodes table with fallback for ASCII codes
830+ // which can match between DOM codes and SDL keycodes (allows keyCodes
831+ // to be smaller).
832+ code = SDL . keyCodes [ code ] || ( code < 128 ? code : 0 ) ;
829833#if RUNTIME_DEBUG
830- if ( ! ( event . keyCode in SDL . keyCodes ) ) dbg ( 'unknown keyCode: ' , event . keyCode ) ;
834+ if ( ! code ) dbg ( 'unmapped keyCode: ' , event . keyCode ) ;
831835#endif
832- code = SDL . keyCodes [ event . keyCode ] || event . keyCode ;
833836 // If this is one of the modifier keys (224 | 1<<10 - 227 | 1<<10), and the event specifies that it is
834837 // a right key, add 4 to get the right key SDL key code.
835838 if ( event . location === 2 /*KeyboardEvent.DOM_KEY_LOCATION_RIGHT*/ && code >= ( 224 | 1 << 10 ) && code <= ( 227 | 1 << 10 ) ) {
@@ -854,6 +857,8 @@ var LibrarySDL = {
854857 case 'keyup ': {
855858 var down = event . type === 'keydown' ;
856859 var code = SDL . lookupKeyCodeForEvent ( event ) ;
860+ // Ignore key events that we don't (yet) map to SDL keys
861+ if ( ! code ) return ;
857862#if ! SAFE_HEAP
858863 // Assigning a boolean to HEAP8, that's alright but Closure would like to warn about it.
859864 // TODO(https://github.com/emscripten-core/emscripten/issues/16311):
@@ -938,6 +943,8 @@ var LibrarySDL = {
938943 dbg ( `received ${ event . type } event: keyCode=${ event . keyCode } , key=${ event . key } , code=${ event . code } ` ) ;
939944#endif
940945 var key = SDL . lookupKeyCodeForEvent ( event ) ;
946+ // Ignore key events that we don't (yet) map to SDL keys
947+ if ( ! key ) return false ;
941948 var scan ;
942949 if ( key >= 1024 ) {
943950 scan = key - 1024 ;
0 commit comments