From ef03183d83c26c5e8ce79ba612f687c66517e4bd Mon Sep 17 00:00:00 2001
From: DoubleHypercube <[EMAIL REDACTED]>
Date: Tue, 22 Sep 2026 23:57:37 +1200
Subject: [PATCH] Add support for Sun 'Front' key
---
include/SDL3/SDL_keycode.h | 1 +
include/SDL3/SDL_scancode.h | 1 +
src/events/SDL_keymap.c | 4 +++-
src/events/scancodes_linux.h | 2 +-
src/events/scancodes_xfree86.h | 2 +-
5 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/include/SDL3/SDL_keycode.h b/include/SDL3/SDL_keycode.h
index 1818ee3e4c1dd..ae5184744e503 100644
--- a/include/SDL3/SDL_keycode.h
+++ b/include/SDL3/SDL_keycode.h
@@ -222,6 +222,7 @@ typedef Uint32 SDL_Keycode;
#define SDLK_CLEARAGAIN 0x400000a2u /**< SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN) */
#define SDLK_CRSEL 0x400000a3u /**< SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL) */
#define SDLK_EXSEL 0x400000a4u /**< SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL) */
+#define SDLK_FRONT 0x400000a5u /**< SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FRONT) */
#define SDLK_KP_00 0x400000b0u /**< SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00) */
#define SDLK_KP_000 0x400000b1u /**< SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000) */
#define SDLK_THOUSANDSSEPARATOR 0x400000b2u /**< SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR) */
diff --git a/include/SDL3/SDL_scancode.h b/include/SDL3/SDL_scancode.h
index aa12c062fcdbc..1e26ecd483a9b 100644
--- a/include/SDL3/SDL_scancode.h
+++ b/include/SDL3/SDL_scancode.h
@@ -286,6 +286,7 @@ typedef enum SDL_Scancode
SDL_SCANCODE_CLEARAGAIN = 162,
SDL_SCANCODE_CRSEL = 163,
SDL_SCANCODE_EXSEL = 164,
+ SDL_SCANCODE_FRONT = 165, /**< Front (Sun keyboards) */
SDL_SCANCODE_KP_00 = 176,
SDL_SCANCODE_KP_000 = 177,
diff --git a/src/events/SDL_keymap.c b/src/events/SDL_keymap.c
index 11f4df54fcba9..d076d16d5c0a5 100644
--- a/src/events/SDL_keymap.c
+++ b/src/events/SDL_keymap.c
@@ -508,6 +508,8 @@ static SDL_Keycode SDL_GetDefaultKeyFromScancode(SDL_Scancode scancode, SDL_Keym
return SDLK_CRSEL;
case SDL_SCANCODE_EXSEL:
return SDLK_EXSEL;
+ case SDL_SCANCODE_FRONT:
+ return SDLK_FRONT;
case SDL_SCANCODE_KP_00:
return SDLK_KP_00;
case SDL_SCANCODE_KP_000:
@@ -913,7 +915,7 @@ static const char *SDL_scancode_names[SDL_SCANCODE_COUNT] =
/* 162 */ "Clear / Again",
/* 163 */ "CrSel",
/* 164 */ "ExSel",
- /* 165 */ NULL,
+ /* 165 */ "Front",
/* 166 */ NULL,
/* 167 */ NULL,
/* 168 */ NULL,
diff --git a/src/events/scancodes_linux.h b/src/events/scancodes_linux.h
index 06f0c1c02eaa3..d47c2c211c747 100644
--- a/src/events/scancodes_linux.h
+++ b/src/events/scancodes_linux.h
@@ -158,7 +158,7 @@ static SDL_Scancode const linux_scancode_table[] = {
/* 129, 0x081 */ SDL_SCANCODE_AGAIN, // KEY_AGAIN
/* 130, 0x082 */ SDL_SCANCODE_AC_PROPERTIES, // KEY_PROPS
/* 131, 0x083 */ SDL_SCANCODE_UNDO, // KEY_UNDO
- /* 132, 0x084 */ SDL_SCANCODE_UNKNOWN, // KEY_FRONT
+ /* 132, 0x084 */ SDL_SCANCODE_FRONT, // KEY_FRONT
/* 133, 0x085 */ SDL_SCANCODE_COPY, // KEY_COPY
/* 134, 0x086 */ SDL_SCANCODE_AC_OPEN, // KEY_OPEN
/* 135, 0x087 */ SDL_SCANCODE_PASTE, // KEY_PASTE
diff --git a/src/events/scancodes_xfree86.h b/src/events/scancodes_xfree86.h
index d7370bddcd5e8..c6b45b6fa3d49 100644
--- a/src/events/scancodes_xfree86.h
+++ b/src/events/scancodes_xfree86.h
@@ -312,7 +312,7 @@ static const SDL_Scancode xfree86_scancode_table2[] = {
/* 129, 0x081 */ SDL_SCANCODE_AGAIN, // Redo
/* 130, 0x082 */ SDL_SCANCODE_AC_PROPERTIES, // SunProps
/* 131, 0x083 */ SDL_SCANCODE_UNDO, // Undo
- /* 132, 0x084 */ SDL_SCANCODE_UNKNOWN, // SunFront
+ /* 132, 0x084 */ SDL_SCANCODE_FRONT, // SunFront
/* 133, 0x085 */ SDL_SCANCODE_COPY, // XF86Copy
/* 134, 0x086 */ SDL_SCANCODE_AC_OPEN, // SunOpen, XF86Open
/* 135, 0x087 */ SDL_SCANCODE_PASTE, // XF86Paste