diff --git a/Externals/SDL/SDL3.vcxproj b/Externals/SDL/SDL3.vcxproj
index d2515630ec..78d44d36b4 100644
--- a/Externals/SDL/SDL3.vcxproj
+++ b/Externals/SDL/SDL3.vcxproj
@@ -18,7 +18,7 @@
SDL\src;SDL\include;SDL\include\build_config;%(AdditionalIncludeDirectories)
- SDL_AUDIO_DISABLED;SDL_VIDEO_DISABLED;SDL_GPU_DISABLED;SDL_RENDER_DISABLED;SDL_CAMERA_DISABLED;SDL_DIALOG_DISABLED;%(PreprocessorDefinitions)
+ SDL_AUDIO_DISABLED;SDL_GPU_DISABLED;SDL_RENDER_DISABLED;SDL_CAMERA_DISABLED;SDL_DIALOG_DISABLED;%(PreprocessorDefinitions)
diff --git a/Source/Core/Common/CMakeLists.txt b/Source/Core/Common/CMakeLists.txt
index e134acabd3..ba1c26c093 100644
--- a/Source/Core/Common/CMakeLists.txt
+++ b/Source/Core/Common/CMakeLists.txt
@@ -96,6 +96,8 @@ add_library(common
JitRegister.h
JsonUtil.h
JsonUtil.cpp
+ Keyboard.h
+ Keyboard.cpp
Lazy.h
LinearDiskCache.h
UnixUtil.h
@@ -352,6 +354,11 @@ if(USE_UPNP)
target_link_libraries(common PRIVATE Miniupnpc::miniupnpc)
endif()
+if(ENABLE_SDL)
+ target_link_libraries(common PRIVATE SDL3::SDL3)
+ target_compile_definitions(common PRIVATE -DHAVE_SDL3)
+endif()
+
if(ENABLE_LLVM)
find_package(LLVM CONFIG)
if(LLVM_FOUND)
diff --git a/Source/Core/Common/Keyboard.cpp b/Source/Core/Common/Keyboard.cpp
new file mode 100644
index 0000000000..0a03afcc58
--- /dev/null
+++ b/Source/Core/Common/Keyboard.cpp
@@ -0,0 +1,509 @@
+// Copyright 2026 Dolphin Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "Common/Keyboard.h"
+
+#include
+#include