early-access version 1617
This commit is contained in:
@@ -55,7 +55,7 @@ static const SDL_Scancode emscripten_scancode_table[] = {
|
||||
/* 9 */ SDL_SCANCODE_TAB,
|
||||
/* 10 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 11 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 12 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 12 */ SDL_SCANCODE_KP_5,
|
||||
/* 13 */ SDL_SCANCODE_RETURN,
|
||||
/* 14 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 15 */ SDL_SCANCODE_UNKNOWN,
|
||||
@@ -103,10 +103,10 @@ static const SDL_Scancode emscripten_scancode_table[] = {
|
||||
/* 57 */ SDL_SCANCODE_9,
|
||||
/* 58 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 59 */ SDL_SCANCODE_SEMICOLON,
|
||||
/* 60 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 60 */ SDL_SCANCODE_NONUSBACKSLASH,
|
||||
/* 61 */ SDL_SCANCODE_EQUALS,
|
||||
/* 62 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 63 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 63 */ SDL_SCANCODE_MINUS,
|
||||
/* 64 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 65 */ SDL_SCANCODE_A,
|
||||
/* 66 */ SDL_SCANCODE_B,
|
||||
@@ -203,7 +203,7 @@ static const SDL_Scancode emscripten_scancode_table[] = {
|
||||
/* 157 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 158 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 159 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 160 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 160 */ SDL_SCANCODE_GRAVE,
|
||||
/* 161 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 162 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 163 */ SDL_SCANCODE_KP_HASH, /*KaiOS phone keypad*/
|
||||
@@ -214,7 +214,7 @@ static const SDL_Scancode emscripten_scancode_table[] = {
|
||||
/* 168 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 169 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 170 */ SDL_SCANCODE_KP_MULTIPLY, /*KaiOS phone keypad*/
|
||||
/* 171 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 171 */ SDL_SCANCODE_RIGHTBRACKET,
|
||||
/* 172 */ SDL_SCANCODE_UNKNOWN,
|
||||
/* 173 */ SDL_SCANCODE_MINUS, /*FX*/
|
||||
/* 174 */ SDL_SCANCODE_VOLUMEDOWN, /*IE, Chrome*/
|
||||
@@ -363,7 +363,7 @@ Emscripten_HandleMouseButton(int eventType, const EmscriptenMouseEvent *mouseEve
|
||||
|
||||
if (eventType == EMSCRIPTEN_EVENT_MOUSEDOWN) {
|
||||
if (SDL_GetMouse()->relative_mode && !window_data->has_pointer_lock) {
|
||||
emscripten_request_pointerlock(NULL, 0); /* try to regrab lost pointer lock. */
|
||||
emscripten_request_pointerlock(window_data->canvas_id, 0); /* try to regrab lost pointer lock. */
|
||||
}
|
||||
sdl_button_state = SDL_PRESSED;
|
||||
sdl_event_type = SDL_MOUSEBUTTONDOWN;
|
||||
@@ -485,6 +485,16 @@ Emscripten_HandleKey(int eventType, const EmscriptenKeyboardEvent *keyEvent, voi
|
||||
if (keyEvent->keyCode < SDL_arraysize(emscripten_scancode_table)) {
|
||||
scancode = emscripten_scancode_table[keyEvent->keyCode];
|
||||
|
||||
if (keyEvent->keyCode == 0) {
|
||||
/* KaiOS Left Soft Key and Right Soft Key, they act as OK/Next/Menu and Cancel/Back/Clear */
|
||||
if (SDL_strncmp(keyEvent->key, "SoftLeft", 9) == 0) {
|
||||
scancode = SDL_SCANCODE_AC_FORWARD;
|
||||
}
|
||||
if (SDL_strncmp(keyEvent->key, "SoftRight", 10) == 0) {
|
||||
scancode = SDL_SCANCODE_AC_BACK;
|
||||
}
|
||||
}
|
||||
|
||||
if (scancode != SDL_SCANCODE_UNKNOWN) {
|
||||
|
||||
if (keyEvent->location == DOM_KEY_LOCATION_RIGHT) {
|
||||
@@ -503,6 +513,55 @@ Emscripten_HandleKey(int eventType, const EmscriptenKeyboardEvent *keyEvent, voi
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (keyEvent->location == DOM_KEY_LOCATION_NUMPAD) {
|
||||
switch (scancode) {
|
||||
case SDL_SCANCODE_0:
|
||||
case SDL_SCANCODE_INSERT:
|
||||
scancode = SDL_SCANCODE_KP_0;
|
||||
break;
|
||||
case SDL_SCANCODE_1:
|
||||
case SDL_SCANCODE_END:
|
||||
scancode = SDL_SCANCODE_KP_1;
|
||||
break;
|
||||
case SDL_SCANCODE_2:
|
||||
case SDL_SCANCODE_DOWN:
|
||||
scancode = SDL_SCANCODE_KP_2;
|
||||
break;
|
||||
case SDL_SCANCODE_3:
|
||||
case SDL_SCANCODE_PAGEDOWN:
|
||||
scancode = SDL_SCANCODE_KP_3;
|
||||
break;
|
||||
case SDL_SCANCODE_4:
|
||||
case SDL_SCANCODE_LEFT:
|
||||
scancode = SDL_SCANCODE_KP_4;
|
||||
break;
|
||||
case SDL_SCANCODE_5:
|
||||
scancode = SDL_SCANCODE_KP_5;
|
||||
break;
|
||||
case SDL_SCANCODE_6:
|
||||
case SDL_SCANCODE_RIGHT:
|
||||
scancode = SDL_SCANCODE_KP_6;
|
||||
break;
|
||||
case SDL_SCANCODE_7:
|
||||
case SDL_SCANCODE_HOME:
|
||||
scancode = SDL_SCANCODE_KP_7;
|
||||
break;
|
||||
case SDL_SCANCODE_8:
|
||||
case SDL_SCANCODE_UP:
|
||||
scancode = SDL_SCANCODE_KP_8;
|
||||
break;
|
||||
case SDL_SCANCODE_9:
|
||||
case SDL_SCANCODE_PAGEUP:
|
||||
scancode = SDL_SCANCODE_KP_9;
|
||||
break;
|
||||
case SDL_SCANCODE_RETURN:
|
||||
scancode = SDL_SCANCODE_KP_ENTER;
|
||||
break;
|
||||
case SDL_SCANCODE_DELETE:
|
||||
scancode = SDL_SCANCODE_KP_PERIOD;
|
||||
break;
|
||||
}
|
||||
}
|
||||
SDL_SendKeyboardKey(eventType == EMSCRIPTEN_EVENT_KEYDOWN ? SDL_PRESSED : SDL_RELEASED, scancode);
|
||||
}
|
||||
}
|
||||
@@ -548,7 +607,7 @@ Emscripten_HandleFullscreenChange(int eventType, const EmscriptenFullscreenChang
|
||||
window_data->requested_fullscreen_mode = 0;
|
||||
|
||||
if(!window_data->requested_fullscreen_mode)
|
||||
window_data->window->flags |= SDL_WINDOW_FULLSCREEN; /*we didn't reqest fullscreen*/
|
||||
window_data->window->flags |= SDL_WINDOW_FULLSCREEN; /*we didn't request fullscreen*/
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -635,6 +694,16 @@ Emscripten_HandleVisibilityChange(int eventType, const EmscriptenVisibilityChang
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const char*
|
||||
Emscripten_HandleBeforeUnload(int eventType, const void *reserved, void *userData)
|
||||
{
|
||||
/* This event will need to be handled synchronously, e.g. using
|
||||
SDL_AddEventWatch, as the page is being closed *now*. */
|
||||
/* No need to send a SDL_QUIT, the app won't get control again. */
|
||||
SDL_SendAppEvent(SDL_APP_TERMINATING);
|
||||
return ""; /* don't trigger confirmation dialog */
|
||||
}
|
||||
|
||||
void
|
||||
Emscripten_RegisterEventHandlers(SDL_WindowData *data)
|
||||
{
|
||||
@@ -674,6 +743,8 @@ Emscripten_RegisterEventHandlers(SDL_WindowData *data)
|
||||
emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, data, 0, Emscripten_HandleResize);
|
||||
|
||||
emscripten_set_visibilitychange_callback(data, 0, Emscripten_HandleVisibilityChange);
|
||||
|
||||
emscripten_set_beforeunload_callback(data, Emscripten_HandleBeforeUnload);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -716,6 +787,8 @@ Emscripten_UnregisterEventHandlers(SDL_WindowData *data)
|
||||
emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 0, NULL);
|
||||
|
||||
emscripten_set_visibilitychange_callback(NULL, 0, NULL);
|
||||
|
||||
emscripten_set_beforeunload_callback(NULL, NULL);
|
||||
}
|
||||
|
||||
#endif /* SDL_VIDEO_DRIVER_EMSCRIPTEN */
|
||||
|
Reference in New Issue
Block a user