diff --git a/src/Input.c b/src/Input.c index 26f16dd6f..8e5e856a7 100644 --- a/src/Input.c +++ b/src/Input.c @@ -216,6 +216,8 @@ static const char* const storageNames[INPUT_COUNT] = { "Keypad5", "Keypad6", "Keypad7", "Keypad8", "Keypad9", "KeypadDivide", "KeypadMultiply", "KeypadSubtract", "KeypadAdd", "KeypadDecimal", "KeypadEnter", + + "VolumeMute", "VolumeUp", "VolumeDown", "MediaNext", "MediaPrev", "MediaPlay", "MediaStop", "XButton1", "XButton2", "XButton3", "XButton4", "XButton5", "XButton6", @@ -242,6 +244,8 @@ const char* const Input_DisplayNames[INPUT_COUNT] = { "NUMPAD5", "NUMPAD6", "NUMPAD7", "NUMPAD8", "NUMPAD9", "DIVIDE", "MULTIPLY", "SUBTRACT", "ADD", "DECIMAL", "NUMPADENTER", + + "VOLUMEMUTE", "VOLUMEUP", "VOLUMEDOWN", "MEDIANEXT", "MEDIAPREV", "MEDIAPLAY", "MEDIASTOP", "XBUTTON1", "XBUTTON2", "XBUTTON3", "XBUTTON4", "XBUTTON5", "XBUTTON6", diff --git a/src/Input.h b/src/Input.h index 2d81ad9a8..bfd89d87a 100644 --- a/src/Input.h +++ b/src/Input.h @@ -42,6 +42,7 @@ enum InputButtons { CCKEY_KP_DIVIDE, CCKEY_KP_MULTIPLY, CCKEY_KP_MINUS, CCKEY_KP_PLUS, CCKEY_KP_DECIMAL, CCKEY_KP_ENTER, + CCKEY_VOLUME_MUTE, CCKEY_VOLUME_UP, CCKEY_VOLUME_DOWN, CCKEY_MEDIA_NEXT, CCKEY_MEDIA_PREV, CCKEY_MEDIA_PLAY, CCKEY_MEDIA_STOP, /* NOTE: RMOUSE must be before MMOUSE for PlayerClick compatibility */ diff --git a/src/Window_SDL.c b/src/Window_SDL.c index 5eb653f47..2ed6b905f 100644 --- a/src/Window_SDL.c +++ b/src/Window_SDL.c @@ -189,6 +189,15 @@ static int MapNativeKey(SDL_Keycode k) { case SDLK_RSHIFT: return CCKEY_RSHIFT; case SDLK_RALT: return CCKEY_RALT; case SDLK_RGUI: return CCKEY_RWIN; + + case SDLK_AUDIONEXT: return CCKEY_MEDIA_NEXT; + case SDLK_AUDIOPREV: return CCKEY_MEDIA_PREV; + case SDLK_AUDIOPLAY: return CCKEY_MEDIA_PLAY; + case SDLK_AUDIOSTOP: return CCKEY_MEDIA_STOP; + + case SDLK_AUDIOMUTE: return CCKEY_VOLUME_MUTE; + case SDLK_VOLUMEDOWN: return CCKEY_VOLUME_DOWN; + case SDLK_VOLUMEUP: return CCKEY_VOLUME_UP; } return INPUT_NONE; } diff --git a/src/Window_SDL3.c b/src/Window_SDL3.c index b2d7d33a6..d744db409 100644 --- a/src/Window_SDL3.c +++ b/src/Window_SDL3.c @@ -176,6 +176,15 @@ static int MapNativeKey(SDL_Keycode k) { case SDLK_RSHIFT: return CCKEY_RSHIFT; case SDLK_RALT: return CCKEY_RALT; case SDLK_RGUI: return CCKEY_RWIN; + + case SDLK_AUDIONEXT: return CCKEY_MEDIA_NEXT; + case SDLK_AUDIOPREV: return CCKEY_MEDIA_PREV; + case SDLK_AUDIOPLAY: return CCKEY_MEDIA_PLAY; + case SDLK_AUDIOSTOP: return CCKEY_MEDIA_STOP; + + case SDLK_AUDIOMUTE: return CCKEY_VOLUME_MUTE; + case SDLK_VOLUMEDOWN: return CCKEY_VOLUME_DOWN; + case SDLK_VOLUMEUP: return CCKEY_VOLUME_UP; } return INPUT_NONE; } diff --git a/src/Window_Web.c b/src/Window_Web.c index a259140f0..b16358a8f 100644 --- a/src/Window_Web.c +++ b/src/Window_Web.c @@ -247,12 +247,25 @@ static int MapNativeKey(int k, int l) { case DOM_VK_BACK_SLASH: return CCKEY_BACKSLASH; case DOM_VK_CLOSE_BRACKET: return CCKEY_RBRACKET; case DOM_VK_QUOTE: return CCKEY_QUOTE; + + case DOM_VK_VOLUME_MUTE: return CCKEY_VOLUME_MUTE; + case DOM_VK_VOLUME_DOWN: return CCKEY_VOLUME_DOWN; + case DOM_VK_VOLUME_UP: return CCKEY_VOLUME_UP; - /* chrome */ + case 173: return CCKEY_VOLUME_MUTE; + case 174: return CCKEY_VOLUME_DOWN; + case 175: return CCKEY_VOLUME_UP; + case 176: return CCKEY_MEDIA_NEXT; + case 177: return CCKEY_MEDIA_PREV; + case 178: return CCKEY_MEDIA_STOP; + case 179: return CCKEY_MEDIA_PLAY; + case 186: return CCKEY_SEMICOLON; case 187: return CCKEY_EQUALS; case 189: return CCKEY_MINUS; } + + Platform_Log1("Unknown key: %i", &k); return INPUT_NONE; } diff --git a/src/Window_Win.c b/src/Window_Win.c index 71a21b7c0..f1cf66e32 100644 --- a/src/Window_Win.c +++ b/src/Window_Win.c @@ -63,7 +63,7 @@ static const cc_uint8 key_map[14 * 16] = { /* 70 */ CCKEY_F1, CCKEY_F2, CCKEY_F3, CCKEY_F4, CCKEY_F5, CCKEY_F6, CCKEY_F7, CCKEY_F8, CCKEY_F9, CCKEY_F10, CCKEY_F11, CCKEY_F12, CCKEY_F13, CCKEY_F14, CCKEY_F15, CCKEY_F16, /* 80 */ CCKEY_F17, CCKEY_F18, CCKEY_F19, CCKEY_F20, CCKEY_F21, CCKEY_F22, CCKEY_F23, CCKEY_F24, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ CCKEY_NUMLOCK, CCKEY_SCROLLLOCK, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* A0 */ CCKEY_LSHIFT, CCKEY_RSHIFT, CCKEY_LCTRL, CCKEY_RCTRL, CCKEY_LALT, CCKEY_RALT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* A0 */ CCKEY_LSHIFT, CCKEY_RSHIFT, CCKEY_LCTRL, CCKEY_RCTRL, CCKEY_LALT, CCKEY_RALT, 0, 0, 0, 0, 0, 0, 0, CCKEY_VOLUME_MUTE, CCKEY_VOLUME_DOWN, CCKEY_VOLUME_UP, /* B0 */ CCKEY_MEDIA_NEXT, CCKEY_MEDIA_PREV, CCKEY_MEDIA_STOP, CCKEY_MEDIA_PLAY, 0, 0, 0, 0, 0, 0, CCKEY_SEMICOLON, CCKEY_EQUALS, CCKEY_COMMA, CCKEY_MINUS, CCKEY_PERIOD, CCKEY_SLASH, /* C0 */ CCKEY_TILDE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* D0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CCKEY_LBRACKET, CCKEY_BACKSLASH, CCKEY_RBRACKET, CCKEY_QUOTE, 0, diff --git a/src/interop_cocoa.m b/src/interop_cocoa.m index 10c32a1f3..9df7437a0 100644 --- a/src/interop_cocoa.m +++ b/src/interop_cocoa.m @@ -30,7 +30,7 @@ static const cc_uint8 key_map[8 * 16] = { /* 0x30 */ CCKEY_TAB, CCKEY_SPACE, CCKEY_TILDE, CCKEY_BACKSPACE, 0, CCKEY_ESCAPE, 0, 0, /* 0x38 */ 0, CCKEY_CAPSLOCK, 0, 0, 0, 0, 0, 0, /* 0x40 */ 0, CCKEY_KP_DECIMAL, 0, CCKEY_KP_MULTIPLY, 0, CCKEY_KP_PLUS, 0, CCKEY_NUMLOCK, -/* 0x48 */ 0, 0, 0, CCKEY_KP_DIVIDE, CCKEY_KP_ENTER, 0, CCKEY_KP_MINUS, 0, +/* 0x48 */ CCKEY_VOLUME_UP, CCKEY_VOLUME_DOWN, CCKEY_VOLUME_MUTE, CCKEY_KP_DIVIDE, CCKEY_KP_ENTER, 0, CCKEY_KP_MINUS, 0, /* 0x50 */ 0, CCKEY_KP_ENTER, CCKEY_KP0, CCKEY_KP1, CCKEY_KP2, CCKEY_KP3, CCKEY_KP4, CCKEY_KP5, /* 0x58 */ CCKEY_KP6, CCKEY_KP7, 0, CCKEY_KP8, CCKEY_KP9, 'N', 'M', CCKEY_PERIOD, /* 0x60 */ CCKEY_F5, CCKEY_F6, CCKEY_F7, CCKEY_F3, CCKEY_F8, CCKEY_F9, 0, CCKEY_F11,