@@ -348,13 +348,13 @@ var LibrarySDL = {
348348 translateRGBAToColor : ( r , g , b , a ) = > r | g << 8 | b << 16 | a << 24 ,
349349
350350 makeSurface ( width , height , flags , usePageCanvas , source , rmask , gmask , bmask , amask ) {
351- var is_SDL_HWSURFACE = flags & 0x00000001 ;
352- var is_SDL_HWPALETTE = flags & 0x00200000 ;
353- var is_SDL_OPENGL = flags & 0x04000000 ;
351+ var is_SDL_HWSURFACE = flags & { { { cDefs . SDL_HWSURFACE } } } ;
352+ var is_SDL_HWPALETTE = flags & { { { cDefs . SDL_HWPALETTE } } } ;
353+ var is_SDL_OPENGL = flags & { { { cDefs . SDL_OPENGL } } } ;
354354
355355 var surf = _malloc ( { { { C_STRUCTS . SDL_Surface . __size__ } } } ) ;
356356 var pixelFormat = _malloc ( { { { C_STRUCTS . SDL_PixelFormat . __size__ } } } ) ;
357- //surface with SDL_HWPALETTE flag is 8bpp surface (1 byte)
357+ // surface with SDL_HWPALETTE flag is 8bpp surface (1 byte)
358358 var bpp = is_SDL_HWPALETTE ? 1 : 4 ;
359359 var buffer = 0 ;
360360
@@ -405,10 +405,10 @@ var LibrarySDL = {
405405 }
406406
407407 var webGLContextAttributes = {
408- antialias : ( ( SDL . glAttributes [ 13 /* SDL_GL_MULTISAMPLEBUFFERS*/ ] != 0 ) && ( SDL . glAttributes [ 14 /* SDL_GL_MULTISAMPLESAMPLES*/ ] > 1 ) ) ,
409- depth : ( SDL . glAttributes [ 6 /* SDL_GL_DEPTH_SIZE*/ ] > 0 ) ,
410- stencil : ( SDL . glAttributes [ 7 /* SDL_GL_STENCIL_SIZE*/ ] > 0 ) ,
411- alpha : ( SDL . glAttributes [ 3 /* SDL_GL_ALPHA_SIZE*/ ] > 0 )
408+ antialias : ( ( SDL . glAttributes [ { { { cDefs . SDL_GL_MULTISAMPLEBUFFERS } } } ] != 0 ) && ( SDL . glAttributes [ { { { cDefs . SDL_GL_MULTISAMPLESAMPLES } } } ] > 1 ) ) ,
409+ depth : ( SDL . glAttributes [ { { { cDefs . SDL_GL_DEPTH_SIZE } } } ] > 0 ) ,
410+ stencil : ( SDL . glAttributes [ { { { cDefs . SDL_GL_STENCIL_SIZE } } } ] > 0 ) ,
411+ alpha : ( SDL . glAttributes [ { { { cDefs . SDL_GL_ALPHA_SIZE } } } ] > 0 )
412412 } ;
413413
414414#if OFFSCREEN_FRAMEBUFFER
@@ -649,7 +649,7 @@ var LibrarySDL = {
649649
650650 // Simulate old-style SDL events representing mouse wheel input as buttons
651651 // Subtract one since JS->C marshalling is defined to add one back.
652- var button = delta > 0 ? 3 /* SDL_BUTTON_WHEELUP-1*/ : 4 /* SDL_BUTTON_WHEELDOWN-1*/ ;
652+ var button = ( delta > 0 ? { { { cDefs . SDL_BUTTON_WHEELUP } } } : { { { cDefs . SDL_BUTTON_WHEELDOWN } } } ) - 1 ;
653653 SDL . events . push ( { type : 'mousedown' , button , pageX : event . pageX , pageY : event . pageY } ) ;
654654 SDL . events . push ( { type : 'mouseup' , button , pageX : event . pageX , pageY : event . pageY } ) ;
655655
@@ -696,7 +696,7 @@ var LibrarySDL = {
696696 // won't fire. However, it's fine (and in some cases necessary) to
697697 // preventDefault for keys that don't generate a character. Otherwise,
698698 // preventDefault is the right thing to do in general.
699- if ( event . type !== 'keydown' || ( ! SDL . unicode && ! SDL . textInput ) || ( event . keyCode === 8 /* backspace */ || event . keyCode === 9 /* tab */ ) ) {
699+ if ( event . type !== 'keydown' || ( ! SDL . unicode && ! SDL . textInput ) || ( event . key == 'Backspace' || event . key == 'Tab' ) ) {
700700 event . preventDefault ( ) ;
701701 }
702702
@@ -826,6 +826,9 @@ var LibrarySDL = {
826826 if ( code >= 65 && code <= 90 ) {
827827 code += 32 ; // make lowercase for SDL
828828 } else {
829+ #if RUNTIME_DEBUG
830+ if ( ! ( event . keyCode in SDL . keyCodes ) ) dbg ( 'unknown keyCode: ' , event . keyCode ) ;
831+ #endif
829832 code = SDL . keyCodes [ event . keyCode ] || event . keyCode ;
830833 // If this is one of the modifier keys (224 | 1<<10 - 227 | 1<<10), and the event specifies that it is
831834 // a right key, add 4 to get the right key SDL key code.
@@ -859,12 +862,13 @@ var LibrarySDL = {
859862#endif
860863 { { { makeSetValue ( 'SDL.keyboardState' , 'code' , 'down' , 'i8' ) } } } ;
861864 // TODO: lmeta, rmeta, numlock, capslock, KMOD_MODE, KMOD_RESERVED
862- SDL . modState = ( { { { makeGetValue ( 'SDL.keyboardState' , '1248' , 'i8' ) } } } ? 0x0040 : 0 ) | // KMOD_LCTRL
863- ( { { { makeGetValue ( 'SDL.keyboardState' , '1249' , 'i8' ) } } } ? 0x0001 : 0 ) | // KMOD_LSHIFT
864- ( { { { makeGetValue ( 'SDL.keyboardState' , '1250' , 'i8' ) } } } ? 0x0100 : 0 ) | // KMOD_LALT
865- ( { { { makeGetValue ( 'SDL.keyboardState' , '1252' , 'i8' ) } } } ? 0x0080 : 0 ) | // KMOD_RCTRL
866- ( { { { makeGetValue ( 'SDL.keyboardState' , '1253' , 'i8' ) } } } ? 0x0002 : 0 ) | // KMOD_RSHIFT
867- ( { { { makeGetValue ( 'SDL.keyboardState' , '1254' , 'i8' ) } } } ? 0x0200 : 0 ) ; // KMOD_RALT
865+ SDL . modState =
866+ ( { { { makeGetValue ( 'SDL.keyboardState' , cDefs . SDLK_LCTRL , 'i8' ) } } } ? { { { cDefs . KMOD_LCTRL } } } : 0 ) |
867+ ( { { { makeGetValue ( 'SDL.keyboardState' , cDefs . SDLK_LSHIFT , 'i8' ) } } } ? { { { cDefs . KMOD_LSHIFT } } } : 0 ) |
868+ ( { { { makeGetValue ( 'SDL.keyboardState' , cDefs . SDLK_LALT , 'i8' ) } } } ? { { { cDefs . KMOD_LALT } } } : 0 ) |
869+ ( { { { makeGetValue ( 'SDL.keyboardState' , cDefs . SDLK_RCTRL , 'i8' ) } } } ? { { { cDefs . KMOD_RCTRL } } } : 0 ) |
870+ ( { { { makeGetValue ( 'SDL.keyboardState' , cDefs . SDLK_RSHIFT , 'i8' ) } } } ? { { { cDefs . KMOD_RSHIFT } } } : 0 ) |
871+ ( { { { makeGetValue ( 'SDL.keyboardState' , cDefs . SDLK_RALT , 'i8' ) } } } ? { { { cDefs . KMOD_RALT } } } : 0 ) ;
868872 if ( down ) {
869873 SDL . keyboardMap [ code ] = event . keyCode ; // save the DOM input, which we can use to unpress it during blur
870874 } else {
@@ -900,7 +904,7 @@ var LibrarySDL = {
900904 } ,
901905
902906 pollEvent ( ptr ) {
903- if ( SDL . initFlags & 0x200 && SDL . joystickEventState ) {
907+ if ( SDL . initFlags & { { { cDefs . SDL_INIT_JOYSTICK } } } && SDL . joystickEventState ) {
904908 // If SDL_INIT_JOYSTICK was supplied AND the joystick system is configured
905909 // to automatically query for events, query for joystick events.
906910 SDL . queryJoysticks ( ) ;
@@ -930,7 +934,9 @@ var LibrarySDL = {
930934 switch ( event . type ) {
931935 case 'keydown' : case 'keyup' : {
932936 var down = event . type === 'keydown' ;
933- //dbg('Received key event: ' + event.keyCode);
937+ #if RUNTIME_DEBUG
938+ dbg ( `received ${ event . type } event: keyCode=${ event . keyCode } , key=${ event . key } , code=${ event . code } ` ) ;
939+ #endif
934940 var key = SDL . lookupKeyCodeForEvent ( event ) ;
935941 var scan ;
936942 if ( key >= 1024 ) {
@@ -1043,23 +1049,19 @@ var LibrarySDL = {
10431049 break ;
10441050 }
10451051 case 'focus ': {
1046- var SDL_WINDOWEVENT_FOCUS_GAINED = 12 /* SDL_WINDOWEVENT_FOCUS_GAINED */ ;
10471052 { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . type , 'SDL.DOMEventToSDLEvent[event.type]' , 'i32' ) } } } ;
10481053 { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . windowID , '0' , 'i32' ) } } } ;
1049- { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . event , ' SDL_WINDOWEVENT_FOCUS_GAINED' , 'i8' ) } } } ;
1054+ { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . event , cDefs . SDL_WINDOWEVENT_FOCUS_GAINED , 'i8' ) } } } ;
10501055 break ;
10511056 }
10521057 case 'blur ': {
1053- var SDL_WINDOWEVENT_FOCUS_LOST = 13 /* SDL_WINDOWEVENT_FOCUS_LOST */ ;
10541058 { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . type , 'SDL.DOMEventToSDLEvent[event.type]' , 'i32' ) } } } ;
10551059 { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . windowID , '0' , 'i32' ) } } } ;
1056- { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . event , ' SDL_WINDOWEVENT_FOCUS_LOST' , 'i8' ) } } } ;
1060+ { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . event , cDefs . SDL_WINDOWEVENT_FOCUS_LOST , 'i8' ) } } } ;
10571061 break ;
10581062 }
10591063 case 'visibilitychange ': {
1060- var SDL_WINDOWEVENT_SHOWN = 1 /* SDL_WINDOWEVENT_SHOWN */ ;
1061- var SDL_WINDOWEVENT_HIDDEN = 2 /* SDL_WINDOWEVENT_HIDDEN */ ;
1062- var visibilityEventID = event . visible ? SDL_WINDOWEVENT_SHOWN : SDL_WINDOWEVENT_HIDDEN ;
1064+ var visibilityEventID = event . visible ? { { { cDefs . SDL_WINDOWEVENT_SHOWN } } } : { { { cDefs . SDL_WINDOWEVENT_HIDDEN } } } ;
10631065 { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . type, 'SDL.DOMEventToSDLEvent[event.type]' , 'i32' ) } } } ;
10641066 { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . windowID, 0 , 'i32' ) } } } ;
10651067 { { { makeSetValue ( 'ptr' , C_STRUCTS . SDL_WindowEvent . event, 'visibilityEventID' , 'i8' ) } } } ;
@@ -1390,28 +1392,28 @@ var LibrarySDL = {
13901392 window . addEventListener ( "unload" , SDL . receiveEvent ) ;
13911393 SDL . keyboardState = _calloc ( 0x10000 , 1 ) ; // Our SDL needs 512, but 64K is safe for older SDLs
13921394 // Initialize this structure carefully for closure
1393- SDL . DOMEventToSDLEvent [ 'keydown' ] = 0x300 /* SDL_KEYDOWN */ ;
1394- SDL . DOMEventToSDLEvent [ 'keyup' ] = 0x301 /* SDL_KEYUP */ ;
1395- SDL . DOMEventToSDLEvent [ 'keypress' ] = 0x303 /* SDL_TEXTINPUT */ ;
1396- SDL . DOMEventToSDLEvent [ 'mousedown' ] = 0x401 /* SDL_MOUSEBUTTONDOWN */ ;
1397- SDL . DOMEventToSDLEvent [ 'mouseup' ] = 0x402 /* SDL_MOUSEBUTTONUP */ ;
1398- SDL . DOMEventToSDLEvent [ 'mousemove' ] = 0x400 /* SDL_MOUSEMOTION */ ;
1399- SDL . DOMEventToSDLEvent [ 'wheel' ] = 0x403 /* SDL_MOUSEWHEEL */ ;
1400- SDL . DOMEventToSDLEvent [ 'touchstart' ] = 0x700 /* SDL_FINGERDOWN */ ;
1401- SDL . DOMEventToSDLEvent [ 'touchend' ] = 0x701 /* SDL_FINGERUP */ ;
1402- SDL . DOMEventToSDLEvent [ 'touchmove' ] = 0x702 /* SDL_FINGERMOTION */ ;
1403- SDL . DOMEventToSDLEvent [ 'unload' ] = 0x100 /* SDL_QUIT */ ;
1404- SDL . DOMEventToSDLEvent [ 'resize' ] = 0x7001 /* SDL_VIDEORESIZE/SDL_EVENT_COMPAT2 */ ;
1405- SDL . DOMEventToSDLEvent [ 'visibilitychange' ] = 0x200 /* SDL_WINDOWEVENT */ ;
1406- SDL . DOMEventToSDLEvent [ 'focus' ] = 0x200 /* SDL_WINDOWEVENT */ ;
1407- SDL . DOMEventToSDLEvent [ 'blur' ] = 0x200 /* SDL_WINDOWEVENT */ ;
1395+ SDL . DOMEventToSDLEvent [ 'keydown' ] = { { { cDefs . SDL_KEYDOWN } } } ;
1396+ SDL . DOMEventToSDLEvent [ 'keyup' ] = { { { cDefs . SDL_KEYUP } } } ;
1397+ SDL . DOMEventToSDLEvent [ 'keypress' ] = { { { cDefs . SDL_TEXTINPUT } } } ;
1398+ SDL . DOMEventToSDLEvent [ 'mousedown' ] = { { { cDefs . SDL_MOUSEBUTTONDOWN } } } ;
1399+ SDL . DOMEventToSDLEvent [ 'mouseup' ] = { { { cDefs . SDL_MOUSEBUTTONUP } } } ;
1400+ SDL . DOMEventToSDLEvent [ 'mousemove' ] = { { { cDefs . SDL_MOUSEMOTION } } } ;
1401+ SDL . DOMEventToSDLEvent [ 'wheel' ] = { { { cDefs . SDL_MOUSEWHEEL } } } ;
1402+ SDL . DOMEventToSDLEvent [ 'touchstart' ] = { { { cDefs . SDL_FINGERDOWN } } } ;
1403+ SDL . DOMEventToSDLEvent [ 'touchend' ] = { { { cDefs . SDL_FINGERUP } } } ;
1404+ SDL . DOMEventToSDLEvent [ 'touchmove' ] = { { { cDefs . SDL_FINGERMOTION } } } ;
1405+ SDL . DOMEventToSDLEvent [ 'unload' ] = { { { cDefs . SDL_QUIT } } } ;
1406+ SDL . DOMEventToSDLEvent [ 'resize' ] = { { { cDefs . SDL_VIDEORESIZE } } } ;
1407+ SDL . DOMEventToSDLEvent [ 'visibilitychange' ] = { { { cDefs . SDL_WINDOWEVENT } } } ;
1408+ SDL . DOMEventToSDLEvent [ 'focus' ] = { { { cDefs . SDL_WINDOWEVENT } } } ;
1409+ SDL . DOMEventToSDLEvent [ 'blur' ] = { { { cDefs . SDL_WINDOWEVENT } } } ;
14081410
14091411 // These are not technically DOM events; the HTML gamepad API is poll-based.
14101412 // However, we define them here, as the rest of the SDL code assumes that
14111413 // all SDL events originate as DOM events.
1412- SDL . DOMEventToSDLEvent [ 'joystick_axis_motion' ] = 0x600 /* SDL_JOYAXISMOTION */ ;
1413- SDL . DOMEventToSDLEvent [ 'joystick_button_down' ] = 0x603 /* SDL_JOYBUTTONDOWN */ ;
1414- SDL . DOMEventToSDLEvent [ 'joystick_button_up' ] = 0x604 /* SDL_JOYBUTTONUP */ ;
1414+ SDL . DOMEventToSDLEvent [ 'joystick_axis_motion' ] = { { { cDefs . SDL_JOYAXISMOTION } } } ;
1415+ SDL . DOMEventToSDLEvent [ 'joystick_button_down' ] = { { { cDefs . SDL_JOYBUTTONDOWN } } } ;
1416+ SDL . DOMEventToSDLEvent [ 'joystick_button_up' ] = { { { cDefs . SDL_JOYBUTTONUP } } } ;
14151417 return 0 ; // success
14161418 } ,
14171419
@@ -1504,7 +1506,7 @@ var LibrarySDL = {
15041506 assert ( ! SDL . screen ) ;
15051507 }
15061508
1507- if ( SDL . GL ) flags = flags | 0x04000000 ; // SDL_OPENGL - if we are using GL, then later calls to SetVideoMode may not mention GL, but we do need it. Once in GL mode, we never leave it.
1509+ if ( SDL . GL ) flags = flags | { { { cDefs . SDL_OPENGL } } } ; // if we are using GL, then later calls to SetVideoMode may not mention GL, but we do need it. Once in GL mode, we never leave it.
15081510
15091511 SDL . screen = SDL . makeSurface ( width , height , flags , true , 'screen' ) ;
15101512
@@ -1580,7 +1582,7 @@ var LibrarySDL = {
15801582
15811583 if ( SDL . defaults . copyOnLock && ! SDL . defaults . discardOnLock ) {
15821584 // Copy pixel data to somewhere accessible to 'C/C++'
1583- if ( surfData . isFlagSet ( 0x00200000 /* SDL_HWPALETTE */ ) ) {
1585+ if ( surfData . isFlagSet ( { { { cDefs . SDL_HWPALETTE } } } ) ) {
15841586 // If this is needed then
15851587 // we should compact the data from 32bpp to 8bpp index.
15861588 // I think best way to implement this is use
@@ -1619,7 +1621,7 @@ var LibrarySDL = {
16191621 }
16201622
16211623 // Copy pixel data to image
1622- if ( surfData . isFlagSet ( 0x00200000 /* SDL_HWPALETTE */ ) ) {
1624+ if ( surfData . isFlagSet ( { { { cDefs . SDL_HWPALETTE } } } ) ) {
16231625 SDL . copyIndexedColorData ( surfData ) ;
16241626 } else if ( ! surfData . colors ) {
16251627 var data = surfData . image . data ;
@@ -1765,9 +1767,16 @@ var LibrarySDL = {
17651767 SDL_GetKeyState : ( ) = > _SDL_GetKeyboardState ( 0 ) ,
17661768
17671769 SDL_GetKeyName__proxy : 'sync' ,
1768- SDL_GetKeyName__deps : [ '$stringToNewUTF8 ' ] ,
1770+ SDL_GetKeyName__deps : [ '$stringToUTF8' , 'realloc '] ,
17691771 SDL_GetKeyName : ( key ) = > {
1770- SDL . keyName ||= stringToNewUTF8 ( 'unknown key' ) ;
1772+ var name = '' ;
1773+ /* ASCII A-Z or 0-9 */
1774+ if ( ( key >= 97 && key <= 122 ) || ( key >= 48 && key <= 57 ) ) {
1775+ name = String . fromCharCode ( key ) ;
1776+ }
1777+ var size = lengthBytesUTF8 ( name ) + 1 ;
1778+ SDL . keyName = _realloc ( SDL . keyName , size ) ;
1779+ stringToUTF8 ( name , SDL . keyName , size ) ;
17711780 return SDL . keyName ;
17721781 } ,
17731782
@@ -1917,7 +1926,7 @@ var LibrarySDL = {
19171926 var surfData = SDL . surfaces [ surf ] ;
19181927 assert ( ! surfData . locked ) ; // but we could unlock and re-lock if we must..
19191928
1920- if ( surfData . isFlagSet ( 0x00200000 /* SDL_HWPALETTE */ ) ) {
1929+ if ( surfData . isFlagSet ( { { { cDefs . SDL_HWPALETTE } } } ) ) {
19211930 //in SDL_HWPALETTE color is index (0..255)
19221931 //so we should translate 1 byte value to
19231932 //32 bit canvas
@@ -1981,7 +1990,7 @@ var LibrarySDL = {
19811990 var surfData = SDL . surfaces [ surf ] ;
19821991 surfData . alpha = alpha ;
19831992
1984- if ( ! ( flag & 0x00010000 ) ) { // !SDL_SRCALPHA
1993+ if ( ! ( flag & { { { cDefs . SDL_SRCALPHA } } } ) ) { // !SDL_SRCALPHA
19851994 surfData . alpha = 255 ;
19861995 }
19871996 } ,
@@ -2134,12 +2143,12 @@ var LibrarySDL = {
21342143 var state = 0 ;
21352144
21362145 if ( Browser . pointerLock ) {
2137- state |= 0x01 ; // SDL_APPMOUSEFOCUS
2146+ state |= { { { cDefs . SDL_APPMOUSEFOCUS } } } ;
21382147 }
21392148 if ( document . hasFocus ( ) ) {
2140- state |= 0x02 ; // SDL_APPINPUTFOCUS
2149+ state |= { { { cDefs . SDL_APPINPUTFOCUS } } } ;
21412150 }
2142- state |= 0x04 ; // SDL_APPACTIVE
2151+ state |= { { { cDefs . SDL_APPACTIVE } } } ;
21432152
21442153 return state ;
21452154 } ,
0 commit comments