From a13c993e402cce95d5a916571eb46555419aed53 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 5 Aug 2024 18:04:17 -0700 Subject: [PATCH] Removed keymaps from the API This is unnecessary complication for applications. We can always add it again later if we find that it's really useful. --- include/SDL3/SDL_keyboard.h | 95 ++------------------------- src/dynapi/SDL_dynapi.sym | 4 -- src/dynapi/SDL_dynapi_overrides.h | 4 -- src/dynapi/SDL_dynapi_procs.h | 6 +- src/events/SDL_keyboard.c | 44 +++++++------ src/events/SDL_keymap.c | 3 +- src/events/SDL_keymap_c.h | 3 +- src/video/wayland/SDL_waylandevents.c | 4 +- src/video/x11/SDL_x11events.c | 2 +- test/checkkeys.c | 44 ------------- test/testautomation_keyboard.c | 81 +++++++++-------------- 11 files changed, 70 insertions(+), 220 deletions(-) diff --git a/include/SDL3/SDL_keyboard.h b/include/SDL3/SDL_keyboard.h index 0ee30a66f..f5b474a33 100644 --- a/include/SDL3/SDL_keyboard.h +++ b/include/SDL3/SDL_keyboard.h @@ -185,103 +185,22 @@ extern SDL_DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); extern SDL_DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); /** - * A keymap is a mapping from scancode and modifier state to keycode. + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. * - * \sa SDL_GetCurrentKeymap - * \sa SDL_GetKeymapKeycode - * \sa SDL_GetKeymapScancode - * \sa SDL_ReleaseKeymap - */ -typedef struct SDL_Keymap SDL_Keymap; - -/** - * Get a reference to the current keyboard layout. + * If you want to get the keycode as it would be delivered in key events, including options specified in SDL_HINT_KEYCODE_OPTIONS, then you should pass `key_event` as SDL_TRUE. Otherwise this function simply translates the scancode based on the given modifier state. * - * You should release the reference to the keymap with SDL_ReleaseKeymap() - * when you're done with it. - * - * \returns the current keymap, or NULL if the default US-QWERTY keymap is - * being used. - * - * \since This function is available since SDL 3.0.0. - * - * \sa SDL_GetKeymapKeycode - * \sa SDL_GetKeymapScancode - * \sa SDL_ReleaseKeymap - */ -extern SDL_DECLSPEC SDL_Keymap * SDLCALL SDL_GetCurrentKeymap(void); - -/** - * Get the key code corresponding to the given scancode and modifier state - * using the provided keymap. - * - * Note that this is not the same as the input that would be generated by - * pressing this key. There are many factors involved, such as dead key - * composition, input method editors, etc. If you're looking for a way to get - * text input, you should handle SDL_EVENT_TEXT_INPUT. - * - * \param keymap the SDL_Keymap to query, or NULL for the default keymap. - * \param scancode the SDL_Scancode to translate. + * \param scancode the desired SDL_Scancode to query. * \param modstate the modifier state to use when translating the scancode to * a keycode. + * \param key_event SDL_TRUE if the keycode will be used in key events. * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. * * \since This function is available since SDL 3.0.0. * - * \sa SDL_GetCurrentKeymap - * \sa SDL_GetKeymapScancode + * \sa SDL_GetKeyName */ -extern SDL_DECLSPEC SDL_Keycode SDLCALL SDL_GetKeymapKeycode(SDL_Keymap *keymap, SDL_Scancode scancode, SDL_Keymod modstate); - -/** - * Get the scancode and modifier state corresponding to the given key code - * using the provided keymap. - * - * Note that there may be multiple scancode+modifier states that can generate - * this keycode, this will just return the first one found. - * - * \param keymap the SDL_Keymap to query, or NULL for the default keymap. - * \param keycode the SDL_Keycode to translate. - * \param modstate a pointer to the modifier state that would be used when the - * scancode generates this key, may be NULL. - * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. - * - * \since This function is available since SDL 3.0.0. - * - * \sa SDL_GetCurrentKeymap - * \sa SDL_GetKeymapKeycode - */ -extern SDL_DECLSPEC SDL_Scancode SDLCALL SDL_GetKeymapScancode(SDL_Keymap *keymap, SDL_Keycode keycode, SDL_Keymod *modstate); - -/** - * Release a reference to the current keyboard layout. - * - * \param keymap the SDL_Keymap to release, may be NULL. - * - * \since This function is available since SDL 3.0.0. - * - * \sa SDL_GetCurrentKeymap - */ -extern SDL_DECLSPEC void SDLCALL SDL_ReleaseKeymap(SDL_Keymap *keymap); - -/** - * Get the key code that would be sent with the given scancode in a key event. - * - * This uses the information from the current keymap along with the options - * specified in SDL_HINT_KEYCODE_OPTIONS to get the keycode that would be - * delivered to the application in a key event. This is typically the - * unmodified version of the key based on the current keyboard layout. For - * example, the keycode for SDL_SCANCODE_A + SDL_KMOD_SHIFT using the US - * QWERTY layout would be 'a'. - * - * \param scancode the SDL_Scancode to translate. - * \param modstate the modifier state to use when translating the scancode to - * a keycode. - * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. - * - * \since This function is available since SDL 3.0.0. - */ -extern SDL_DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode, SDL_Keymod modstate); +extern SDL_DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode, SDL_Keymod modstate, SDL_bool key_event); /** * Set a human-readable name for a scancode. diff --git a/src/dynapi/SDL_dynapi.sym b/src/dynapi/SDL_dynapi.sym index 01ba58d99..7c4bcd657 100644 --- a/src/dynapi/SDL_dynapi.sym +++ b/src/dynapi/SDL_dynapi.sym @@ -199,7 +199,6 @@ SDL3_0.0.0 { SDL_GetCurrentCameraDriver; SDL_GetCurrentDisplayMode; SDL_GetCurrentDisplayOrientation; - SDL_GetCurrentKeymap; SDL_GetCurrentRenderOutputSize; SDL_GetCurrentThreadID; SDL_GetCurrentTime; @@ -328,8 +327,6 @@ SDL3_0.0.0 { SDL_GetKeyboardNameForID; SDL_GetKeyboardState; SDL_GetKeyboards; - SDL_GetKeymapKeycode; - SDL_GetKeymapScancode; SDL_GetLogOutputFunction; SDL_GetLogPriority; SDL_GetMasksForPixelFormat; @@ -644,7 +641,6 @@ SDL3_0.0.0 { SDL_RegisterApp; SDL_RegisterEvents; SDL_ReleaseCameraFrame; - SDL_ReleaseKeymap; SDL_ReloadGamepadMappings; SDL_RemovePath; SDL_RemoveStoragePath; diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index dc0dfe762..4832cd7c0 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -224,7 +224,6 @@ #define SDL_GetCurrentCameraDriver SDL_GetCurrentCameraDriver_REAL #define SDL_GetCurrentDisplayMode SDL_GetCurrentDisplayMode_REAL #define SDL_GetCurrentDisplayOrientation SDL_GetCurrentDisplayOrientation_REAL -#define SDL_GetCurrentKeymap SDL_GetCurrentKeymap_REAL #define SDL_GetCurrentRenderOutputSize SDL_GetCurrentRenderOutputSize_REAL #define SDL_GetCurrentThreadID SDL_GetCurrentThreadID_REAL #define SDL_GetCurrentTime SDL_GetCurrentTime_REAL @@ -353,8 +352,6 @@ #define SDL_GetKeyboardNameForID SDL_GetKeyboardNameForID_REAL #define SDL_GetKeyboardState SDL_GetKeyboardState_REAL #define SDL_GetKeyboards SDL_GetKeyboards_REAL -#define SDL_GetKeymapKeycode SDL_GetKeymapKeycode_REAL -#define SDL_GetKeymapScancode SDL_GetKeymapScancode_REAL #define SDL_GetLogOutputFunction SDL_GetLogOutputFunction_REAL #define SDL_GetLogPriority SDL_GetLogPriority_REAL #define SDL_GetMasksForPixelFormat SDL_GetMasksForPixelFormat_REAL @@ -669,7 +666,6 @@ #define SDL_RegisterApp SDL_RegisterApp_REAL #define SDL_RegisterEvents SDL_RegisterEvents_REAL #define SDL_ReleaseCameraFrame SDL_ReleaseCameraFrame_REAL -#define SDL_ReleaseKeymap SDL_ReleaseKeymap_REAL #define SDL_ReloadGamepadMappings SDL_ReloadGamepadMappings_REAL #define SDL_RemovePath SDL_RemovePath_REAL #define SDL_RemoveStoragePath SDL_RemoveStoragePath_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index 12c25093a..a92417445 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -244,7 +244,6 @@ SDL_DYNAPI_PROC(const char*,SDL_GetCurrentAudioDriver,(void),(),return) SDL_DYNAPI_PROC(const char*,SDL_GetCurrentCameraDriver,(void),(),return) SDL_DYNAPI_PROC(const SDL_DisplayMode*,SDL_GetCurrentDisplayMode,(SDL_DisplayID a),(a),return) SDL_DYNAPI_PROC(SDL_DisplayOrientation,SDL_GetCurrentDisplayOrientation,(SDL_DisplayID a),(a),return) -SDL_DYNAPI_PROC(SDL_Keymap*,SDL_GetCurrentKeymap,(void),(),return) SDL_DYNAPI_PROC(int,SDL_GetCurrentRenderOutputSize,(SDL_Renderer *a, int *b, int *c),(a,b,c),return) SDL_DYNAPI_PROC(SDL_ThreadID,SDL_GetCurrentThreadID,(void),(),return) SDL_DYNAPI_PROC(int,SDL_GetCurrentTime,(SDL_Time *a),(a),return) @@ -367,14 +366,12 @@ SDL_DYNAPI_PROC(Uint16,SDL_GetJoystickVendor,(SDL_Joystick *a),(a),return) SDL_DYNAPI_PROC(Uint16,SDL_GetJoystickVendorForID,(SDL_JoystickID a),(a),return) SDL_DYNAPI_PROC(SDL_JoystickID*,SDL_GetJoysticks,(int *a),(a),return) SDL_DYNAPI_PROC(SDL_Keycode,SDL_GetKeyFromName,(const char *a, SDL_bool b),(a, b),return) -SDL_DYNAPI_PROC(SDL_Keycode,SDL_GetKeyFromScancode,(SDL_Scancode a, SDL_Keymod b),(a,b),return) +SDL_DYNAPI_PROC(SDL_Keycode,SDL_GetKeyFromScancode,(SDL_Scancode a, SDL_Keymod b, SDL_bool c),(a,b,c),return) SDL_DYNAPI_PROC(const char*,SDL_GetKeyName,(SDL_Keycode a, SDL_bool b),(a,b),return) SDL_DYNAPI_PROC(SDL_Window*,SDL_GetKeyboardFocus,(void),(),return) SDL_DYNAPI_PROC(const char*,SDL_GetKeyboardNameForID,(SDL_KeyboardID a),(a),return) SDL_DYNAPI_PROC(const Uint8*,SDL_GetKeyboardState,(int *a),(a),return) SDL_DYNAPI_PROC(SDL_KeyboardID*,SDL_GetKeyboards,(int *a),(a),return) -SDL_DYNAPI_PROC(SDL_Keycode,SDL_GetKeymapKeycode,(SDL_Keymap *a, SDL_Scancode b, SDL_Keymod c),(a,b,c),return) -SDL_DYNAPI_PROC(SDL_Scancode,SDL_GetKeymapScancode,(SDL_Keymap *a, SDL_Keycode b, SDL_Keymod *c),(a,b,c),return) SDL_DYNAPI_PROC(void,SDL_GetLogOutputFunction,(SDL_LogOutputFunction *a, void **b),(a,b),) SDL_DYNAPI_PROC(SDL_LogPriority,SDL_GetLogPriority,(int a),(a),return) SDL_DYNAPI_PROC(int,SDL_GetMasksForPixelFormat,(SDL_PixelFormat a, int *b, Uint32 *c, Uint32 *d, Uint32 *e, Uint32 *f),(a,b,c,d,e,f),return) @@ -680,7 +677,6 @@ SDL_DYNAPI_PROC(SDL_bool,SDL_ReadU8,(SDL_IOStream *a, Uint8 *b),(a,b),return) SDL_DYNAPI_PROC(int,SDL_RegisterApp,(const char *a, Uint32 b, void *c),(a,b,c),return) SDL_DYNAPI_PROC(Uint32,SDL_RegisterEvents,(int a),(a),return) SDL_DYNAPI_PROC(int,SDL_ReleaseCameraFrame,(SDL_Camera *a, SDL_Surface *b),(a,b),return) -SDL_DYNAPI_PROC(void,SDL_ReleaseKeymap,(SDL_Keymap *a),(a),) SDL_DYNAPI_PROC(int,SDL_ReloadGamepadMappings,(void),(),return) SDL_DYNAPI_PROC(int,SDL_RemovePath,(const char *a),(a),return) SDL_DYNAPI_PROC(int,SDL_RemoveStoragePath,(SDL_Storage *a, const char *b),(a,b),return) diff --git a/src/events/SDL_keyboard.c b/src/events/SDL_keyboard.c index 6aa54ba67..e4788a71d 100644 --- a/src/events/SDL_keyboard.c +++ b/src/events/SDL_keyboard.c @@ -229,6 +229,8 @@ SDL_Keymap *SDL_GetCurrentKeymap(void) { SDL_Keyboard *keyboard = &SDL_keyboard; + SDL_AcquireKeymap(keyboard->keymap); + return keyboard->keymap; } @@ -431,33 +433,37 @@ static SDL_Keycode SDL_ConvertNumpadKeycode(SDL_Keycode keycode, SDL_bool numloc } } -SDL_Keycode SDL_GetKeyFromScancode(SDL_Scancode scancode, SDL_Keymod modstate) +SDL_Keycode SDL_GetKeyFromScancode(SDL_Scancode scancode, SDL_Keymod modstate, SDL_bool key_event) { SDL_Keyboard *keyboard = &SDL_keyboard; - SDL_bool numlock = (modstate & SDL_KMOD_NUM) != 0; SDL_Keycode keycode; - // We won't be applying any modifiers by default - modstate = SDL_KMOD_NONE; + if (key_event) { + SDL_bool numlock = (modstate & SDL_KMOD_NUM) != 0; - if ((keyboard->keycode_options & KEYCODE_OPTION_LATIN_LETTERS) && - keyboard->non_latin_letters) { - keycode = SDL_GetKeymapKeycode(NULL, scancode, modstate); - } else { - if ((keyboard->keycode_options & KEYCODE_OPTION_FRENCH_NUMBERS) && - keyboard->french_numbers && - (scancode >= SDL_SCANCODE_1 && scancode <= SDL_SCANCODE_0)) { - // Add the shift state to generate a numeric keycode - modstate |= SDL_KMOD_SHIFT; + // We won't be applying any modifiers by default + modstate = SDL_KMOD_NONE; + + if ((keyboard->keycode_options & KEYCODE_OPTION_LATIN_LETTERS) && + keyboard->non_latin_letters) { + keycode = SDL_GetKeymapKeycode(NULL, scancode, modstate); + } else { + if ((keyboard->keycode_options & KEYCODE_OPTION_FRENCH_NUMBERS) && + keyboard->french_numbers && + (scancode >= SDL_SCANCODE_1 && scancode <= SDL_SCANCODE_0)) { + // Add the shift state to generate a numeric keycode + modstate |= SDL_KMOD_SHIFT; + } + + keycode = SDL_GetKeymapKeycode(keyboard->keymap, scancode, modstate); } + if (keyboard->keycode_options & KEYCODE_OPTION_HIDE_NUMPAD) { + keycode = SDL_ConvertNumpadKeycode(keycode, numlock); + } + } else { keycode = SDL_GetKeymapKeycode(keyboard->keymap, scancode, modstate); } - - if (keyboard->keycode_options & KEYCODE_OPTION_HIDE_NUMPAD) { - keycode = SDL_ConvertNumpadKeycode(keycode, numlock); - } - return keycode; } @@ -509,7 +515,7 @@ static int SDL_SendKeyboardKeyInternal(Uint64 timestamp, Uint32 flags, SDL_Keybo /* Update internal keyboard state */ keyboard->keystate[scancode] = state; - keycode = SDL_GetKeyFromScancode(scancode, keyboard->modstate); + keycode = SDL_GetKeyFromScancode(scancode, keyboard->modstate, SDL_TRUE); } else if (rawcode == 0) { /* Nothing to do! */ diff --git a/src/events/SDL_keymap.c b/src/events/SDL_keymap.c index ee0502511..452ee24a9 100644 --- a/src/events/SDL_keymap.c +++ b/src/events/SDL_keymap.c @@ -1114,6 +1114,5 @@ SDL_Keycode SDL_GetKeyFromName(const char *name, SDL_bool uppercase) return key; } - /* Get the scancode for this name, and the associated keycode */ - return SDL_GetKeyFromScancode(SDL_GetScancodeFromName(name), SDL_KMOD_NONE); + return SDL_GetKeyFromScancode(SDL_GetScancodeFromName(name), SDL_KMOD_NONE, SDL_FALSE); } diff --git a/src/events/SDL_keymap_c.h b/src/events/SDL_keymap_c.h index 6d3005490..d6b4f1803 100644 --- a/src/events/SDL_keymap_c.h +++ b/src/events/SDL_keymap_c.h @@ -23,8 +23,9 @@ #ifndef SDL_keymap_c_h_ #define SDL_keymap_c_h_ -#include "../SDL_hashtable.h" +typedef struct SDL_Keymap SDL_Keymap; +SDL_Keymap *SDL_GetCurrentKeymap(void); SDL_Keymap *SDL_CreateKeymap(void); void SDL_AcquireKeymap(SDL_Keymap *keymap); void SDL_SetKeymapEntry(SDL_Keymap *keymap, SDL_Scancode scancode, SDL_Keymod modstate, SDL_Keycode keycode); diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c index b2890f6ea..3f9aa8663 100644 --- a/src/video/wayland/SDL_waylandevents.c +++ b/src/video/wayland/SDL_waylandevents.c @@ -1457,7 +1457,7 @@ static void Wayland_ReconcileModifiers(struct SDL_WaylandInput *input) static void Wayland_HandleModifierKeys(struct SDL_WaylandInput *input, SDL_Scancode scancode, SDL_bool pressed) { - const SDL_Keycode keycode = SDL_GetKeyFromScancode(scancode, SDL_KMOD_NONE); + const SDL_Keycode keycode = SDL_GetKeyFromScancode(scancode, SDL_KMOD_NONE, SDL_FALSE); SDL_Keymod mod; switch (keycode) { @@ -1536,7 +1536,7 @@ static void keyboard_handle_enter(void *data, struct wl_keyboard *keyboard, wl_array_for_each (key, keys) { const SDL_Scancode scancode = Wayland_get_scancode_from_key(input, *key + 8); - const SDL_Keycode keycode = SDL_GetKeyFromScancode(scancode, SDL_KMOD_NONE); + const SDL_Keycode keycode = SDL_GetKeyFromScancode(scancode, SDL_KMOD_NONE, SDL_FALSE); switch (keycode) { case SDLK_LSHIFT: diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index cb46a4e37..b5b5d60f8 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -313,7 +313,7 @@ void X11_ReconcileKeyboardState(SDL_VideoDevice *_this) if (x11KeyPressed && !sdlKeyPressed) { /* Only update modifier state for keys that are pressed in another application */ - switch (SDL_GetKeyFromScancode(scancode, SDL_KMOD_NONE)) { + switch (SDL_GetKeyFromScancode(scancode, SDL_KMOD_NONE, SDL_FALSE)) { case SDLK_LCTRL: case SDLK_RCTRL: case SDLK_LSHIFT: diff --git a/test/checkkeys.c b/test/checkkeys.c index 9f3111fae..b10e7aaf7 100644 --- a/test/checkkeys.c +++ b/test/checkkeys.c @@ -172,48 +172,6 @@ static void print_modifiers(char **text, size_t *maxlen, SDL_Keymod mod) } } -static void PrintKeymap(void) -{ - SDL_Keymod mods[] = { - SDL_KMOD_NONE, - SDL_KMOD_SHIFT, - SDL_KMOD_CAPS, - (SDL_KMOD_SHIFT | SDL_KMOD_CAPS), - SDL_KMOD_ALT, - (SDL_KMOD_ALT | SDL_KMOD_SHIFT), - (SDL_KMOD_ALT | SDL_KMOD_CAPS), - (SDL_KMOD_ALT | SDL_KMOD_SHIFT | SDL_KMOD_CAPS), - SDL_KMOD_MODE, - (SDL_KMOD_MODE | SDL_KMOD_SHIFT), - (SDL_KMOD_MODE | SDL_KMOD_CAPS), - (SDL_KMOD_MODE | SDL_KMOD_SHIFT | SDL_KMOD_CAPS) - }; - int i, m; - SDL_Keymap *keymap = SDL_GetCurrentKeymap(); - - SDL_Log("Differences from the default keymap:\n"); - for (m = 0; m < SDL_arraysize(mods); ++m) { - for (i = 0; i < SDL_NUM_SCANCODES; ++i) { - SDL_Keycode key = SDL_GetKeymapKeycode(keymap, (SDL_Scancode)i, mods[m]); - SDL_Keycode default_key = SDL_GetKeymapKeycode(NULL, (SDL_Scancode)i, mods[m]); - if (key != default_key) { - char message[512]; - char *spot; - size_t left; - - spot = message; - left = sizeof(message); - - print_string(&spot, &left, "Scancode %s (%d)", SDL_GetScancodeName((SDL_Scancode)i), i); - print_modifiers(&spot, &left, mods[m]); - print_string(&spot, &left, ": %s 0x%x (default: %s 0x%x)", SDL_GetKeyName(key, SDL_FALSE), key, SDL_GetKeyName(default_key, SDL_FALSE), default_key); - SDL_Log("%s", message); - } - } - } - SDL_ReleaseKeymap(keymap); -} - static void PrintModifierState(void) { char message[512]; @@ -434,7 +392,6 @@ static void loop(void) break; case SDL_EVENT_KEYMAP_CHANGED: SDL_Log("Keymap changed!\n"); - PrintKeymap(); break; case SDL_EVENT_QUIT: done = 1; @@ -548,7 +505,6 @@ int main(int argc, char *argv[]) /* Print initial state */ SDL_PumpEvents(); - PrintKeymap(); PrintModifierState(); /* Watch keystrokes */ diff --git a/test/testautomation_keyboard.c b/test/testautomation_keyboard.c index 90d3cf646..6a895f0b0 100644 --- a/test/testautomation_keyboard.c +++ b/test/testautomation_keyboard.c @@ -128,12 +128,12 @@ static int keyboard_getKeyFromScancode(void *arg) SDL_Keycode result; /* Case where input is valid */ - result = SDL_GetKeyFromScancode(SDL_SCANCODE_A, SDL_KMOD_NONE); + result = SDL_GetKeyFromScancode(SDL_SCANCODE_A, SDL_KMOD_NONE, SDL_FALSE); SDLTest_AssertPass("Call to SDL_GetKeyFromScancode(valid)"); SDLTest_AssertCheck(result == SDLK_A, "Verify result from call, expected: %d, got: %" SDL_PRIu32, SDLK_A, result); /* Case where input is zero */ - result = SDL_GetKeyFromScancode(SDL_SCANCODE_UNKNOWN, SDL_KMOD_NONE); + result = SDL_GetKeyFromScancode(SDL_SCANCODE_UNKNOWN, SDL_KMOD_NONE, SDL_FALSE); SDLTest_AssertPass("Call to SDL_GetKeyFromScancode(0)"); SDLTest_AssertCheck(result == SDLK_UNKNOWN, "Verify result from call is UNKNOWN, expected: %d, got: %" SDL_PRIu32, SDLK_UNKNOWN, result); @@ -142,13 +142,13 @@ static int keyboard_getKeyFromScancode(void *arg) SDLTest_AssertPass("Call to SDL_ClearError()"); /* Case where input is invalid (too small) */ - result = SDL_GetKeyFromScancode((SDL_Scancode)-999, SDL_KMOD_NONE); + result = SDL_GetKeyFromScancode((SDL_Scancode)-999, SDL_KMOD_NONE, SDL_FALSE); SDLTest_AssertPass("Call to SDL_GetKeyFromScancode(-999)"); SDLTest_AssertCheck(result == SDLK_UNKNOWN, "Verify result from call is UNKNOWN, expected: %d, got: %" SDL_PRIu32, SDLK_UNKNOWN, result); checkInvalidScancodeError(); /* Case where input is invalid (too big) */ - result = SDL_GetKeyFromScancode((SDL_Scancode)999, SDL_KMOD_NONE); + result = SDL_GetKeyFromScancode((SDL_Scancode)999, SDL_KMOD_NONE, SDL_FALSE); SDLTest_AssertPass("Call to SDL_GetKeyFromScancode(999)"); SDLTest_AssertCheck(result == SDLK_UNKNOWN, "Verify result from call is UNKNOWN, expected: %d, got: %" SDL_PRIu32, SDLK_UNKNOWN, result); checkInvalidScancodeError(); @@ -497,32 +497,6 @@ static int keyboard_setTextInputAreaNegative(void *arg) return TEST_COMPLETED; } -/** - * Check call to SDL_getKeymapScancode - * - * \sa SDL_getKeymapScancode - * \sa SDL_Keycode - */ -static int keyboard_getKeymapScancode(void *arg) -{ - SDL_Scancode scancode; - SDL_Keymod modstate; - - /* Regular key */ - scancode = SDL_GetKeymapScancode(NULL, SDLK_4, &modstate); - SDLTest_AssertPass("Call to SDL_GetKeymapScancode(SDLK_4)"); - SDLTest_AssertCheck(scancode == SDL_SCANCODE_4, "Validate return value from SDL_GetDefaultScancodeFromKey, expected: %d, got: %d", SDL_SCANCODE_4, scancode); - SDLTest_AssertCheck(modstate == SDL_KMOD_NONE, "Validate modstate from SDL_GetDefaultScancodeFromKey, expected: %d, got: %d", SDL_KMOD_NONE, modstate); - - /* Virtual key */ - scancode = SDL_GetKeymapScancode(NULL, SDLK_PLUS, &modstate); - SDLTest_AssertPass("Call to SDL_GetKeymapScancode(SDLK_PLUS)"); - SDLTest_AssertCheck(scancode == SDL_SCANCODE_EQUALS, "Validate return value from SDL_GetDefaultScancodeFromKey, expected: %d, got: %d", SDL_SCANCODE_EQUALS, scancode); - SDLTest_AssertCheck(modstate == SDL_KMOD_SHIFT, "Validate modstate from SDL_GetDefaultScancodeFromKey, expected: %d, got: %d", SDL_KMOD_SHIFT, modstate); - - return TEST_COMPLETED; -} - /** * Check call to SDL_GetScancodeFromName * @@ -641,67 +615,74 @@ static int keyboard_getScancodeFromNameNegative(void *arg) /* ================= Test References ================== */ /* Keyboard test cases */ -static const SDLTest_TestCaseReference keyboardTest1 = { +static const SDLTest_TestCaseReference keyboardTestGetKeyboardState = { (SDLTest_TestCaseFp)keyboard_getKeyboardState, "keyboard_getKeyboardState", "Check call to SDL_GetKeyboardState with and without numkeys reference", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest2 = { +static const SDLTest_TestCaseReference keyboardTestGetKeyboardFocus = { (SDLTest_TestCaseFp)keyboard_getKeyboardFocus, "keyboard_getKeyboardFocus", "Check call to SDL_GetKeyboardFocus", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest3 = { +static const SDLTest_TestCaseReference keyboardTestGetKeyFromName = { (SDLTest_TestCaseFp)keyboard_getKeyFromName, "keyboard_getKeyFromName", "Check call to SDL_GetKeyFromName for known, unknown and invalid name", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest4 = { +static const SDLTest_TestCaseReference keyboardTestGetKeyFromScancode = { (SDLTest_TestCaseFp)keyboard_getKeyFromScancode, "keyboard_getKeyFromScancode", "Check call to SDL_GetKeyFromScancode", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest5 = { +static const SDLTest_TestCaseReference keyboardTestGetKeyName = { (SDLTest_TestCaseFp)keyboard_getKeyName, "keyboard_getKeyName", "Check call to SDL_GetKeyName", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest6 = { +static const SDLTest_TestCaseReference keyboardTestGetSetModState = { (SDLTest_TestCaseFp)keyboard_getSetModState, "keyboard_getSetModState", "Check call to SDL_GetModState and SDL_SetModState", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest7 = { +static const SDLTest_TestCaseReference keyboardTestStartStopTextInput = { (SDLTest_TestCaseFp)keyboard_startStopTextInput, "keyboard_startStopTextInput", "Check call to SDL_StartTextInput and SDL_StopTextInput", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest8 = { +static const SDLTest_TestCaseReference keyboardTestSetTextInputArea = { (SDLTest_TestCaseFp)keyboard_setTextInputArea, "keyboard_setTextInputArea", "Check call to SDL_SetTextInputArea", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest9 = { +static const SDLTest_TestCaseReference keyboardTestSetTextInputAreaNegative = { (SDLTest_TestCaseFp)keyboard_setTextInputAreaNegative, "keyboard_setTextInputAreaNegative", "Check call to SDL_SetTextInputArea with invalid data", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest10 = { - (SDLTest_TestCaseFp)keyboard_getKeymapScancode, "keyboard_getKeymapScancode", "Check call to SDL_getKeymapScancode", TEST_ENABLED -}; - -static const SDLTest_TestCaseReference keyboardTest11 = { +static const SDLTest_TestCaseReference keyboardTestGetScancodeFromName = { (SDLTest_TestCaseFp)keyboard_getScancodeFromName, "keyboard_getScancodeFromName", "Check call to SDL_GetScancodeFromName", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest12 = { +static const SDLTest_TestCaseReference keyboardTestGetScancodeFromNameNegative = { (SDLTest_TestCaseFp)keyboard_getScancodeFromNameNegative, "keyboard_getScancodeFromNameNegative", "Check call to SDL_GetScancodeFromName with invalid data", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest13 = { +static const SDLTest_TestCaseReference keyboardTestGetKeyNameNegative = { (SDLTest_TestCaseFp)keyboard_getKeyNameNegative, "keyboard_getKeyNameNegative", "Check call to SDL_GetKeyName with invalid data", TEST_ENABLED }; -static const SDLTest_TestCaseReference keyboardTest14 = { +static const SDLTest_TestCaseReference keyboardTestGetScancodeNameNegative = { (SDLTest_TestCaseFp)keyboard_getScancodeNameNegative, "keyboard_getScancodeNameNegative", "Check call to SDL_GetScancodeName with invalid data", TEST_ENABLED }; /* Sequence of Keyboard test cases */ static const SDLTest_TestCaseReference *keyboardTests[] = { - &keyboardTest1, &keyboardTest2, &keyboardTest3, &keyboardTest4, &keyboardTest5, &keyboardTest6, - &keyboardTest7, &keyboardTest8, &keyboardTest9, &keyboardTest10, &keyboardTest11, &keyboardTest12, - &keyboardTest13, &keyboardTest14, NULL + &keyboardTestGetKeyboardState, + &keyboardTestGetKeyboardFocus, + &keyboardTestGetKeyFromName, + &keyboardTestGetKeyFromScancode, + &keyboardTestGetKeyName, + &keyboardTestGetSetModState, + &keyboardTestStartStopTextInput, + &keyboardTestSetTextInputArea, + &keyboardTestSetTextInputAreaNegative, + &keyboardTestGetScancodeFromName, + &keyboardTestGetScancodeFromNameNegative, + &keyboardTestGetKeyNameNegative, + &keyboardTestGetScancodeNameNegative, + NULL }; /* Keyboard test suite (global) */