mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Reordered keys representing directions to follow a consistent L/R/U/D order everywhere. (#2625, #4921, #3724)
Amended to avoid static analysis false positive.
This commit is contained in:
		| @@ -604,10 +604,10 @@ static void ImGui_ImplGlfw_UpdateGamepads() | ||||
|     io.BackendFlags |= ImGuiBackendFlags_HasGamepad; | ||||
|     MAP_BUTTON(ImGuiKey_GamepadStart,       GLFW_GAMEPAD_BUTTON_START,          7); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadBack,        GLFW_GAMEPAD_BUTTON_BACK,           6); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,    GLFW_GAMEPAD_BUTTON_A,              0);     // Xbox A, PS Cross | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,   GLFW_GAMEPAD_BUTTON_B,              1);     // Xbox B, PS Circle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceLeft,    GLFW_GAMEPAD_BUTTON_X,              2);     // Xbox X, PS Square | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,   GLFW_GAMEPAD_BUTTON_B,              1);     // Xbox B, PS Circle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceUp,      GLFW_GAMEPAD_BUTTON_Y,              3);     // Xbox Y, PS Triangle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,    GLFW_GAMEPAD_BUTTON_A,              0);     // Xbox A, PS Cross | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadLeft,    GLFW_GAMEPAD_BUTTON_DPAD_LEFT,      13); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadRight,   GLFW_GAMEPAD_BUTTON_DPAD_RIGHT,     11); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadUp,      GLFW_GAMEPAD_BUTTON_DPAD_UP,        10); | ||||
|   | ||||
| @@ -542,10 +542,10 @@ static void ImGui_ImplOSX_UpdateGamepads() | ||||
| #if APPLE_HAS_BUTTON_OPTIONS | ||||
|     MAP_BUTTON(ImGuiKey_GamepadBack,            buttonOptions); | ||||
| #endif | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,        buttonA);              // Xbox A, PS Cross | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,       buttonB);              // Xbox B, PS Circle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceLeft,        buttonX);              // Xbox X, PS Square | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,       buttonB);              // Xbox B, PS Circle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceUp,          buttonY);              // Xbox Y, PS Triangle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,        buttonA);              // Xbox A, PS Cross | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadLeft,        dpad.left); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadRight,       dpad.right); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadUp,          dpad.up); | ||||
|   | ||||
| @@ -498,10 +498,10 @@ static void ImGui_ImplSDL2_UpdateGamepads() | ||||
|     const int thumb_dead_zone = 8000;           // SDL_gamecontroller.h suggests using this value. | ||||
|     MAP_BUTTON(ImGuiKey_GamepadStart,           SDL_CONTROLLER_BUTTON_START); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadBack,            SDL_CONTROLLER_BUTTON_BACK); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,        SDL_CONTROLLER_BUTTON_A);              // Xbox A, PS Cross | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,       SDL_CONTROLLER_BUTTON_B);              // Xbox B, PS Circle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceLeft,        SDL_CONTROLLER_BUTTON_X);              // Xbox X, PS Square | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,       SDL_CONTROLLER_BUTTON_B);              // Xbox B, PS Circle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceUp,          SDL_CONTROLLER_BUTTON_Y);              // Xbox Y, PS Triangle | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,        SDL_CONTROLLER_BUTTON_A);              // Xbox A, PS Cross | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadLeft,        SDL_CONTROLLER_BUTTON_DPAD_LEFT); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadRight,       SDL_CONTROLLER_BUTTON_DPAD_RIGHT); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadUp,          SDL_CONTROLLER_BUTTON_DPAD_UP); | ||||
|   | ||||
| @@ -301,10 +301,10 @@ static void ImGui_ImplWin32_UpdateGamepads() | ||||
|     #define MAP_ANALOG(KEY_NO, VALUE, V0, V1)   { float vn = (float)(VALUE - V0) / (float)(V1 - V0); io.AddKeyAnalogEvent(KEY_NO, vn > 0.10f, IM_SATURATE(vn)); } | ||||
|     MAP_BUTTON(ImGuiKey_GamepadStart,           XINPUT_GAMEPAD_START); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadBack,            XINPUT_GAMEPAD_BACK); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,        XINPUT_GAMEPAD_A); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,       XINPUT_GAMEPAD_B); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceLeft,        XINPUT_GAMEPAD_X); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceRight,       XINPUT_GAMEPAD_B); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceUp,          XINPUT_GAMEPAD_Y); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadFaceDown,        XINPUT_GAMEPAD_A); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadLeft,        XINPUT_GAMEPAD_DPAD_LEFT); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadRight,       XINPUT_GAMEPAD_DPAD_RIGHT); | ||||
|     MAP_BUTTON(ImGuiKey_GamepadDpadUp,          XINPUT_GAMEPAD_DPAD_UP); | ||||
|   | ||||
							
								
								
									
										19
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -7618,11 +7618,12 @@ static const char* const GKeyNames[] = | ||||
|     "Pause", "Keypad0", "Keypad1", "Keypad2", "Keypad3", "Keypad4", "Keypad5", "Keypad6", | ||||
|     "Keypad7", "Keypad8", "Keypad9", "KeypadDecimal", "KeypadDivide", "KeypadMultiply", | ||||
|     "KeypadSubtract", "KeypadAdd", "KeypadEnter", "KeypadEqual", | ||||
|     "GamepadStart", "GamepadBack", "GamepadFaceUp", "GamepadFaceDown", "GamepadFaceLeft", "GamepadFaceRight", | ||||
|     "GamepadDpadUp", "GamepadDpadDown", "GamepadDpadLeft", "GamepadDpadRight", | ||||
|     "GamepadStart", "GamepadBack", | ||||
|     "GamepadFaceLeft", "GamepadFaceRight", "GamepadFaceUp", "GamepadFaceDown", | ||||
|     "GamepadDpadLeft", "GamepadDpadRight", "GamepadDpadUp", "GamepadDpadDown", | ||||
|     "GamepadL1", "GamepadR1", "GamepadL2", "GamepadR2", "GamepadL3", "GamepadR3", | ||||
|     "GamepadLStickUp", "GamepadLStickDown", "GamepadLStickLeft", "GamepadLStickRight", | ||||
|     "GamepadRStickUp", "GamepadRStickDown", "GamepadRStickLeft", "GamepadRStickRight", | ||||
|     "GamepadLStickLeft", "GamepadLStickRight", "GamepadLStickUp", "GamepadLStickDown", | ||||
|     "GamepadRStickLeft", "GamepadRStickRight", "GamepadRStickUp", "GamepadRStickDown", | ||||
|     "ModCtrl", "ModShift", "ModAlt", "ModSuper" | ||||
| }; | ||||
| IM_STATIC_ASSERT(ImGuiKey_NamedKey_COUNT == IM_ARRAYSIZE(GKeyNames)); | ||||
| @@ -10136,16 +10137,18 @@ float ImGui::GetNavInputAmount(ImGuiNavInput n, ImGuiNavReadMode mode) | ||||
|     ImGuiIO& io = g.IO; | ||||
|     if (mode == ImGuiNavReadMode_Down) // Instant, read analog input (0.0f..1.0f, as provided by user) | ||||
|         return io.NavInputs[n]; | ||||
|  | ||||
|     const float t = io.NavInputsDownDuration[n]; | ||||
|     if (t < 0.0f) | ||||
|         return 0.0f; | ||||
|     if (mode == ImGuiNavReadMode_Repeat) | ||||
|     switch (mode) | ||||
|     { | ||||
|     case ImGuiNavReadMode_Repeat: | ||||
|         return (float)CalcTypematicRepeatAmount(t - io.DeltaTime, t, io.KeyRepeatDelay * 0.72f, io.KeyRepeatRate * 0.80f); | ||||
|     if (mode == ImGuiNavReadMode_RepeatSlow) | ||||
|     case ImGuiNavReadMode_RepeatSlow: | ||||
|         return (float)CalcTypematicRepeatAmount(t - io.DeltaTime, t, io.KeyRepeatDelay * 1.25f, io.KeyRepeatRate * 2.00f); | ||||
|     if (mode == ImGuiNavReadMode_RepeatFast) | ||||
|     case ImGuiNavReadMode_RepeatFast: | ||||
|         return (float)CalcTypematicRepeatAmount(t - io.DeltaTime, t, io.KeyRepeatDelay * 0.72f, io.KeyRepeatRate * 0.30f); | ||||
|     } | ||||
|     return 0.0f; | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										16
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -1400,28 +1400,28 @@ enum ImGuiKey_ | ||||
|     // Gamepad (some of those are analog values, 0.0f to 1.0f)                              // NAVIGATION action | ||||
|     ImGuiKey_GamepadStart,          // Menu (Xbox)          + (Switch)   Start/Options (PS) // -- | ||||
|     ImGuiKey_GamepadBack,           // View (Xbox)          - (Switch)   Share (PS)         // -- | ||||
|     ImGuiKey_GamepadFaceUp,         // Y (Xbox)             X (Switch)   Triangle (PS)      // -> ImGuiNavInput_Input | ||||
|     ImGuiKey_GamepadFaceDown,       // A (Xbox)             B (Switch)   Cross (PS)         // -> ImGuiNavInput_Activate | ||||
|     ImGuiKey_GamepadFaceLeft,       // X (Xbox)             Y (Switch)   Square (PS)        // -> ImGuiNavInput_Menu | ||||
|     ImGuiKey_GamepadFaceRight,      // B (Xbox)             A (Switch)   Circle (PS)        // -> ImGuiNavInput_Cancel | ||||
|     ImGuiKey_GamepadDpadUp,         // D-pad Up                                             // -> ImGuiNavInput_DpadUp | ||||
|     ImGuiKey_GamepadDpadDown,       // D-pad Down                                           // -> ImGuiNavInput_DpadDown | ||||
|     ImGuiKey_GamepadFaceUp,         // Y (Xbox)             X (Switch)   Triangle (PS)      // -> ImGuiNavInput_Input | ||||
|     ImGuiKey_GamepadFaceDown,       // A (Xbox)             B (Switch)   Cross (PS)         // -> ImGuiNavInput_Activate | ||||
|     ImGuiKey_GamepadDpadLeft,       // D-pad Left                                           // -> ImGuiNavInput_DpadLeft | ||||
|     ImGuiKey_GamepadDpadRight,      // D-pad Right                                          // -> ImGuiNavInput_DpadRight | ||||
|     ImGuiKey_GamepadDpadUp,         // D-pad Up                                             // -> ImGuiNavInput_DpadUp | ||||
|     ImGuiKey_GamepadDpadDown,       // D-pad Down                                           // -> ImGuiNavInput_DpadDown | ||||
|     ImGuiKey_GamepadL1,             // L Bumper (Xbox)      L (Switch)   L1 (PS)            // -> ImGuiNavInput_FocusPrev + ImGuiNavInput_TweakSlow | ||||
|     ImGuiKey_GamepadR1,             // R Bumper (Xbox)      R (Switch)   R1 (PS)            // -> ImGuiNavInput_FocusNext + ImGuiNavInput_TweakFast | ||||
|     ImGuiKey_GamepadL2,             // L Trigger (Xbox)     ZL (Switch)  L2 (PS) [Analog] | ||||
|     ImGuiKey_GamepadR2,             // R Trigger (Xbox)     ZR (Switch)  R2 (PS) [Analog] | ||||
|     ImGuiKey_GamepadL3,             // L Thumbstick (Xbox)  L3 (Switch)  L3 (PS) | ||||
|     ImGuiKey_GamepadR3,             // R Thumbstick (Xbox)  R3 (Switch)  R3 (PS) | ||||
|     ImGuiKey_GamepadLStickUp,       // [Analog]                                             // -> ImGuiNavInput_LStickUp | ||||
|     ImGuiKey_GamepadLStickDown,     // [Analog]                                             // -> ImGuiNavInput_LStickDown | ||||
|     ImGuiKey_GamepadLStickLeft,     // [Analog]                                             // -> ImGuiNavInput_LStickLeft | ||||
|     ImGuiKey_GamepadLStickRight,    // [Analog]                                             // -> ImGuiNavInput_LStickRight | ||||
|     ImGuiKey_GamepadRStickUp,       // [Analog] | ||||
|     ImGuiKey_GamepadRStickDown,     // [Analog] | ||||
|     ImGuiKey_GamepadLStickUp,       // [Analog]                                             // -> ImGuiNavInput_LStickUp | ||||
|     ImGuiKey_GamepadLStickDown,     // [Analog]                                             // -> ImGuiNavInput_LStickDown | ||||
|     ImGuiKey_GamepadRStickLeft,     // [Analog] | ||||
|     ImGuiKey_GamepadRStickRight,    // [Analog] | ||||
|     ImGuiKey_GamepadRStickUp,       // [Analog] | ||||
|     ImGuiKey_GamepadRStickDown,     // [Analog] | ||||
|  | ||||
|     // Keyboard Modifiers (explicitly submitted by backend via AddKeyEvent() calls) | ||||
|     // - This is mirroring the data also written to io.KeyCtrl, io.KeyShift, io.KeyAlt, io.KeySuper, in a format allowing | ||||
|   | ||||
| @@ -1177,7 +1177,7 @@ enum ImGuiKeyPrivate_ | ||||
|     ImGuiKey_LegacyNativeKey_BEGIN  = 0, | ||||
|     ImGuiKey_LegacyNativeKey_END    = 512, | ||||
|     ImGuiKey_Gamepad_BEGIN          = ImGuiKey_GamepadStart, | ||||
|     ImGuiKey_Gamepad_END            = ImGuiKey_GamepadRStickRight + 1 | ||||
|     ImGuiKey_Gamepad_END            = ImGuiKey_GamepadRStickDown + 1 | ||||
| }; | ||||
|  | ||||
| enum ImGuiInputEventType | ||||
|   | ||||
		Reference in New Issue
	
	Block a user