Przeglądaj źródła

Added ImGuiKey_AbntC1, ImGuiKey_AbntC2 + Backends: GLFW, Win32: added support. (#8468)

ocornut 4 miesięcy temu
rodzic
commit
557c77e455
5 zmienionych plików z 19 dodań i 7 usunięć
  1. 9 3
      backends/imgui_impl_glfw.cpp
  2. 4 2
      backends/imgui_impl_win32.cpp
  3. 3 1
      docs/CHANGELOG.txt
  4. 1 1
      imgui.cpp
  5. 2 0
      imgui.h

+ 9 - 3
backends/imgui_impl_glfw.cpp

@@ -28,7 +28,7 @@
 
 // CHANGELOG
 // (minor and older changes stripped away, please see git history for details)
-//  2025-03-10: Map GLFW_KEY_WORLD_1 and GLFW_KEY_WORLD_2 into ImGuiKey_Oem102.
+//  2025-03-11: Added support for ImGuiKey_Oem102, ImGuiKey_AbntC1, ImGuiKey_AbntC2.
 //  2025-03-03: Fixed clipboard handler assertion when using GLFW <= 3.2.1 compiled with asserts enabled.
 //  2024-08-22: Moved some OS/backend related function pointers from ImGuiIO to ImGuiPlatformIO:
 //               - io.GetClipboardTextFn    -> platform_io.Platform_GetClipboardTextFn
@@ -195,7 +195,6 @@ static ImGui_ImplGlfw_Data* ImGui_ImplGlfw_GetBackendData()
 ImGuiKey ImGui_ImplGlfw_KeyToImGuiKey(int keycode, int scancode);
 ImGuiKey ImGui_ImplGlfw_KeyToImGuiKey(int keycode, int scancode)
 {
-    IM_UNUSED(scancode);
     switch (keycode)
     {
         case GLFW_KEY_TAB: return ImGuiKey_Tab;
@@ -317,8 +316,15 @@ ImGuiKey ImGui_ImplGlfw_KeyToImGuiKey(int keycode, int scancode)
         case GLFW_KEY_F22: return ImGuiKey_F22;
         case GLFW_KEY_F23: return ImGuiKey_F23;
         case GLFW_KEY_F24: return ImGuiKey_F24;
-        default: return ImGuiKey_None;
+        default: break;
+    }
+    switch (scancode)
+    {
+        case 115: return ImGuiKey_AbntC1;
+        case 126: return ImGuiKey_AbntC2;
+        default: break;
     }
+    return ImGuiKey_None;
 }
 
 // X11 does not include current pressed/released modifier key in 'mods' flags submitted by GLFW

+ 4 - 2
backends/imgui_impl_win32.cpp

@@ -21,7 +21,7 @@
 
 // CHANGELOG
 // (minor and older changes stripped away, please see git history for details)
-//  2025-03-10: When dealing with OEM keys, use scancodes instead of translated keycodes to choose ImGuiKey values. (#7136, #7201, #7206, #7306, #7670, #7672, #8468)
+//  2025-03-10: When dealing with OEM keys, use scancodes instead of translated keycodes to choose ImGuiKey values. (#7136, #7201, #7206, #7306, #7670, #7672, #8468) + Added support for ImGuiKey_Oem102, ImGuiKey_AbntC1, ImGuiKey_AbntC2.
 //  2025-02-18: Added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursor support.
 //  2024-07-08: Inputs: Fixed ImGuiMod_Super being mapped to VK_APPS instead of VK_LWIN||VK_RWIN. (#7768)
 //  2023-10-05: Inputs: Added support for extra ImGuiKey values: F13 to F24 function keys, app back/forward keys.
@@ -565,13 +565,15 @@ ImGuiKey ImGui_ImplWin32_KeyEventToImGuiKey(WPARAM wParam, LPARAM lParam)
     case 13: return ImGuiKey_Equal;
     case 26: return ImGuiKey_LeftBracket;
     case 27: return ImGuiKey_RightBracket;
-    case 86: return ImGuiKey_Oem102;
     case 43: return ImGuiKey_Backslash;
     case 39: return ImGuiKey_Semicolon;
     case 40: return ImGuiKey_Apostrophe;
     case 51: return ImGuiKey_Comma;
     case 52: return ImGuiKey_Period;
     case 53: return ImGuiKey_Slash;
+    case 86: return ImGuiKey_Oem102;
+    case 115: return ImGuiKey_AbntC1;
+    case 126: return ImGuiKey_AbntC2;
     }
 
     return ImGuiKey_None;

+ 3 - 1
docs/CHANGELOG.txt

@@ -128,6 +128,7 @@ Other changes:
 - Examples: Updated all .vcxproj from VS2015 to VS2019 (toolset v140 to v142),
   and from Windows SDK 8.1 to Windows SDK 10 ("latest" setting).
 - IO: Added ImGuiKey_Oem102 to ImGuiKey enum. (#7136, #7201, #7206, #7306, #8468)
+- IO: Added ImGuiKey_AbntC1, ImGuiKey_AbntC2 to ImGuiKey enum. (#8468)
 - Backends: reworked key handlers to use/prioritize untranslated scancodes instead of
   translated keycodes when dealing with OEM keys which are too difficult to find a reliable
   translated mapping on all systems, backends and keyboard layout.
@@ -139,7 +140,8 @@ Other changes:
   - Fixes many cases of keys not emitting a ImGuiKey value with certain keyboad layouts.
   - Makes emitted ImGuiKey values more consistent regardless of keyboard mapping,
     but you may be getting different values as before.
-  - Win32, SDL2, SDL3: Use scancodes for OEM keys.
+  - Win32: Use scancodes for OEM keys. Added support for the 3 new keys.
+  - SDL2, SDL3: Use scancodes for OEM keys. Added support for the Oem102 new key.
   - GLFW: GLFW_KEY_WORLD_1 and GLFW_KEY_WORLD_2 are emitting ImGuiKey_Oem102.
 - Backends: GLFW: Fixed clipboard handler assertion when using GLFW <= 3.2.1 compiled
   with asserts enabled. (#8452)

+ 1 - 1
imgui.cpp

@@ -8787,7 +8787,7 @@ static const char* const GKeyNames[] =
     "Pause", "Keypad0", "Keypad1", "Keypad2", "Keypad3", "Keypad4", "Keypad5", "Keypad6",
     "Keypad7", "Keypad8", "Keypad9", "KeypadDecimal", "KeypadDivide", "KeypadMultiply",
     "KeypadSubtract", "KeypadAdd", "KeypadEnter", "KeypadEqual",
-    "AppBack", "AppForward", "Oem102",
+    "AppBack", "AppForward", "Oem102", "AbntC1", "AbntC2",
     "GamepadStart", "GamepadBack",
     "GamepadFaceLeft", "GamepadFaceRight", "GamepadFaceUp", "GamepadFaceDown",
     "GamepadDpadLeft", "GamepadDpadRight", "GamepadDpadUp", "GamepadDpadDown",

+ 2 - 0
imgui.h

@@ -1494,6 +1494,8 @@ enum ImGuiKey : int
     ImGuiKey_AppBack,               // Available on some keyboard/mouses. Often referred as "Browser Back"
     ImGuiKey_AppForward,
     ImGuiKey_Oem102,                // Non-US backslash.
+    ImGuiKey_AbntC1,                // Brazil ABNT extra keys
+    ImGuiKey_AbntC2,
 
     // Gamepad (some of those are analog values, 0.0f to 1.0f)                          // NAVIGATION ACTION
     // (download controller mapping PNG/PSD at http://dearimgui.com/controls_sheets)