mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-08-29 10:01:35 +00:00
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.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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! */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user