mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	IO: Added "Super" keyboard modifiers (corresponding to Cmd on Mac and Windows key in theory although the later is hard to read) (#473)
NB: Value not used.
This commit is contained in:
		| @@ -249,6 +249,7 @@ void ImGui_ImplA5_NewFrame() | |||||||
|     io.KeyCtrl = al_key_down(&keys, ALLEGRO_KEY_LCTRL) || al_key_down(&keys, ALLEGRO_KEY_RCTRL); |     io.KeyCtrl = al_key_down(&keys, ALLEGRO_KEY_LCTRL) || al_key_down(&keys, ALLEGRO_KEY_RCTRL); | ||||||
|     io.KeyShift = al_key_down(&keys, ALLEGRO_KEY_LSHIFT) || al_key_down(&keys, ALLEGRO_KEY_RSHIFT); |     io.KeyShift = al_key_down(&keys, ALLEGRO_KEY_LSHIFT) || al_key_down(&keys, ALLEGRO_KEY_RSHIFT); | ||||||
|     io.KeyAlt = al_key_down(&keys, ALLEGRO_KEY_ALT) || al_key_down(&keys, ALLEGRO_KEY_ALTGR); |     io.KeyAlt = al_key_down(&keys, ALLEGRO_KEY_ALT) || al_key_down(&keys, ALLEGRO_KEY_ALTGR); | ||||||
|  |     io.KeySuper = al_key_down(&keys, ALLEGRO_KEY_LWIN) || al_key_down(&keys, ALLEGRO_KEY_RWIN); | ||||||
|  |  | ||||||
|     ALLEGRO_MOUSE_STATE mouse; |     ALLEGRO_MOUSE_STATE mouse; | ||||||
|     if (keys.display == g_Display) |     if (keys.display == g_Display) | ||||||
|   | |||||||
| @@ -496,6 +496,7 @@ void ImGui_ImplDX10_NewFrame() | |||||||
|     io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; |     io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; | ||||||
|     io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0; |     io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0; | ||||||
|     io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0; |     io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0; | ||||||
|  |     io.KeySuper = false; | ||||||
|     // io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events |     // io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events | ||||||
|     // io.MousePos : filled by WM_MOUSEMOVE events |     // io.MousePos : filled by WM_MOUSEMOVE events | ||||||
|     // io.MouseDown : filled by WM_*BUTTON* events |     // io.MouseDown : filled by WM_*BUTTON* events | ||||||
|   | |||||||
| @@ -494,6 +494,7 @@ void ImGui_ImplDX11_NewFrame() | |||||||
|     io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; |     io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; | ||||||
|     io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0; |     io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0; | ||||||
|     io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0; |     io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0; | ||||||
|  |     io.KeySuper = false; | ||||||
|     // io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events |     // io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events | ||||||
|     // io.MousePos : filled by WM_MOUSEMOVE events |     // io.MousePos : filled by WM_MOUSEMOVE events | ||||||
|     // io.MouseDown : filled by WM_*BUTTON* events |     // io.MouseDown : filled by WM_*BUTTON* events | ||||||
|   | |||||||
| @@ -309,6 +309,7 @@ void ImGui_ImplDX9_NewFrame() | |||||||
|     io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; |     io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0; | ||||||
|     io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0; |     io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0; | ||||||
|     io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0; |     io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0; | ||||||
|  |     io.KeySuper = false; | ||||||
|     // io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events |     // io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events | ||||||
|     // io.MousePos : filled by WM_MOUSEMOVE events |     // io.MousePos : filled by WM_MOUSEMOVE events | ||||||
|     // io.MouseDown : filled by WM_*BUTTON* events |     // io.MouseDown : filled by WM_*BUTTON* events | ||||||
|   | |||||||
| @@ -263,10 +263,10 @@ void ImGui_KeyboardCallback(uSynergyCookie cookie, uint16_t key, | |||||||
| //    printf("Synergy: keyboard callback: 0x%02X (%s)", scanCode, down?"true":"false"); | //    printf("Synergy: keyboard callback: 0x%02X (%s)", scanCode, down?"true":"false"); | ||||||
|     ImGuiIO& io = ImGui::GetIO(); |     ImGuiIO& io = ImGui::GetIO(); | ||||||
|     io.KeysDown[key] = down; |     io.KeysDown[key] = down; | ||||||
|     io.KeyShift = modifiers & USYNERGY_MODIFIER_SHIFT; |     io.KeyShift = (modifiers & USYNERGY_MODIFIER_SHIFT); | ||||||
|     io.KeyCtrl = modifiers & USYNERGY_MODIFIER_CTRL; |     io.KeyCtrl = (modifiers & USYNERGY_MODIFIER_CTRL); | ||||||
|     io.KeyAlt = modifiers & USYNERGY_MODIFIER_ALT; |     io.KeyAlt = (modifiers & USYNERGY_MODIFIER_ALT); | ||||||
|      |     io.KeySuper = (modifiers & USYNERGY_MODIFIER_WIN); | ||||||
|      |      | ||||||
|     // Add this as keyboard input |     // Add this as keyboard input | ||||||
|     if ((down) && (key) && (scanCode<256) && !(modifiers & USYNERGY_MODIFIER_CTRL))  |     if ((down) && (key) && (scanCode<256) && !(modifiers & USYNERGY_MODIFIER_CTRL))  | ||||||
|   | |||||||
| @@ -153,6 +153,7 @@ int32 ImGui_Marmalade_KeyCallback(void* SystemData, void* userData) | |||||||
|     io.KeyCtrl = s3eKeyboardGetState(s3eKeyLeftControl) == S3E_KEY_STATE_DOWN || s3eKeyboardGetState(s3eKeyRightControl) == S3E_KEY_STATE_DOWN; |     io.KeyCtrl = s3eKeyboardGetState(s3eKeyLeftControl) == S3E_KEY_STATE_DOWN || s3eKeyboardGetState(s3eKeyRightControl) == S3E_KEY_STATE_DOWN; | ||||||
|     io.KeyShift = s3eKeyboardGetState(s3eKeyLeftShift) == S3E_KEY_STATE_DOWN || s3eKeyboardGetState(s3eKeyRightShift) == S3E_KEY_STATE_DOWN; |     io.KeyShift = s3eKeyboardGetState(s3eKeyLeftShift) == S3E_KEY_STATE_DOWN || s3eKeyboardGetState(s3eKeyRightShift) == S3E_KEY_STATE_DOWN; | ||||||
|     io.KeyAlt = s3eKeyboardGetState(s3eKeyLeftAlt) == S3E_KEY_STATE_DOWN || s3eKeyboardGetState(s3eKeyRightAlt) == S3E_KEY_STATE_DOWN; |     io.KeyAlt = s3eKeyboardGetState(s3eKeyLeftAlt) == S3E_KEY_STATE_DOWN || s3eKeyboardGetState(s3eKeyRightAlt) == S3E_KEY_STATE_DOWN; | ||||||
|  |     io.KeySuper = s3eKeyboardGetState(s3eKeyLeftWindows) == S3E_KEY_STATE_DOWN || s3eKeyboardGetState(s3eKeyRightWindows) == S3E_KEY_STATE_DOWN; | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -157,6 +157,7 @@ void ImGui_ImplGlfwGL3_KeyCallback(GLFWwindow*, int key, int, int action, int mo | |||||||
|     io.KeyCtrl = io.KeysDown[GLFW_KEY_LEFT_CONTROL] || io.KeysDown[GLFW_KEY_RIGHT_CONTROL]; |     io.KeyCtrl = io.KeysDown[GLFW_KEY_LEFT_CONTROL] || io.KeysDown[GLFW_KEY_RIGHT_CONTROL]; | ||||||
|     io.KeyShift = io.KeysDown[GLFW_KEY_LEFT_SHIFT] || io.KeysDown[GLFW_KEY_RIGHT_SHIFT]; |     io.KeyShift = io.KeysDown[GLFW_KEY_LEFT_SHIFT] || io.KeysDown[GLFW_KEY_RIGHT_SHIFT]; | ||||||
|     io.KeyAlt = io.KeysDown[GLFW_KEY_LEFT_ALT] || io.KeysDown[GLFW_KEY_RIGHT_ALT]; |     io.KeyAlt = io.KeysDown[GLFW_KEY_LEFT_ALT] || io.KeysDown[GLFW_KEY_RIGHT_ALT]; | ||||||
|  |     io.KeySuper = io.KeysDown[GLFW_KEY_LEFT_SUPER] || io.KeysDown[GLFW_KEY_RIGHT_SUPER]; | ||||||
| } | } | ||||||
|  |  | ||||||
| void ImGui_ImplGlfwGL3_CharCallback(GLFWwindow*, unsigned int c) | void ImGui_ImplGlfwGL3_CharCallback(GLFWwindow*, unsigned int c) | ||||||
|   | |||||||
| @@ -139,6 +139,7 @@ void ImGui_ImplGlFw_KeyCallback(GLFWwindow*, int key, int, int action, int mods) | |||||||
|     io.KeyCtrl = io.KeysDown[GLFW_KEY_LEFT_CONTROL] || io.KeysDown[GLFW_KEY_RIGHT_CONTROL]; |     io.KeyCtrl = io.KeysDown[GLFW_KEY_LEFT_CONTROL] || io.KeysDown[GLFW_KEY_RIGHT_CONTROL]; | ||||||
|     io.KeyShift = io.KeysDown[GLFW_KEY_LEFT_SHIFT] || io.KeysDown[GLFW_KEY_RIGHT_SHIFT]; |     io.KeyShift = io.KeysDown[GLFW_KEY_LEFT_SHIFT] || io.KeysDown[GLFW_KEY_RIGHT_SHIFT]; | ||||||
|     io.KeyAlt = io.KeysDown[GLFW_KEY_LEFT_ALT] || io.KeysDown[GLFW_KEY_RIGHT_ALT]; |     io.KeyAlt = io.KeysDown[GLFW_KEY_LEFT_ALT] || io.KeysDown[GLFW_KEY_RIGHT_ALT]; | ||||||
|  |     io.KeySuper = io.KeysDown[GLFW_KEY_LEFT_SUPER] || io.KeysDown[GLFW_KEY_RIGHT_SUPER]; | ||||||
| } | } | ||||||
|  |  | ||||||
| void ImGui_ImplGlfw_CharCallback(GLFWwindow*, unsigned int c) | void ImGui_ImplGlfw_CharCallback(GLFWwindow*, unsigned int c) | ||||||
|   | |||||||
| @@ -162,6 +162,7 @@ bool ImGui_ImplSdlGL3_ProcessEvent(SDL_Event* event) | |||||||
|             io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0); |             io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0); | ||||||
|             io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0); |             io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0); | ||||||
|             io.KeyAlt = ((SDL_GetModState() & KMOD_ALT) != 0); |             io.KeyAlt = ((SDL_GetModState() & KMOD_ALT) != 0); | ||||||
|  |             io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -143,6 +143,7 @@ bool ImGui_ImplSdl_ProcessEvent(SDL_Event* event) | |||||||
|             io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0); |             io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0); | ||||||
|             io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0); |             io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0); | ||||||
|             io.KeyAlt = ((SDL_GetModState() & KMOD_ALT) != 0); |             io.KeyAlt = ((SDL_GetModState() & KMOD_ALT) != 0); | ||||||
|  |             io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -743,6 +743,7 @@ struct ImGuiIO | |||||||
|     bool        KeyCtrl;                    // Keyboard modifier pressed: Control |     bool        KeyCtrl;                    // Keyboard modifier pressed: Control | ||||||
|     bool        KeyShift;                   // Keyboard modifier pressed: Shift |     bool        KeyShift;                   // Keyboard modifier pressed: Shift | ||||||
|     bool        KeyAlt;                     // Keyboard modifier pressed: Alt |     bool        KeyAlt;                     // Keyboard modifier pressed: Alt | ||||||
|  |     bool        KeySuper;                   // Keyboard modifier pressed: Cmd/Super/Windows | ||||||
|     bool        KeysDown[512];              // Keyboard keys that are pressed (in whatever storage order you naturally have access to keyboard data) |     bool        KeysDown[512];              // Keyboard keys that are pressed (in whatever storage order you naturally have access to keyboard data) | ||||||
|     ImWchar     InputCharacters[16+1];      // List of characters input (translated by user from keypress+keyboard state). Fill using AddInputCharacter() helper. |     ImWchar     InputCharacters[16+1];      // List of characters input (translated by user from keypress+keyboard state). Fill using AddInputCharacter() helper. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1500,7 +1500,7 @@ void ImGui::ShowTestWindow(bool* p_opened) | |||||||
|             ImGui::Text("Keys down:");      for (int i = 0; i < IM_ARRAYSIZE(io.KeysDown); i++) if (io.KeysDownDuration[i] >= 0.0f)     { ImGui::SameLine(); ImGui::Text("%d (%.02f secs)", i, io.KeysDownDuration[i]); } |             ImGui::Text("Keys down:");      for (int i = 0; i < IM_ARRAYSIZE(io.KeysDown); i++) if (io.KeysDownDuration[i] >= 0.0f)     { ImGui::SameLine(); ImGui::Text("%d (%.02f secs)", i, io.KeysDownDuration[i]); } | ||||||
|             ImGui::Text("Keys pressed:");   for (int i = 0; i < IM_ARRAYSIZE(io.KeysDown); i++) if (ImGui::IsKeyPressed(i))             { ImGui::SameLine(); ImGui::Text("%d", i); } |             ImGui::Text("Keys pressed:");   for (int i = 0; i < IM_ARRAYSIZE(io.KeysDown); i++) if (ImGui::IsKeyPressed(i))             { ImGui::SameLine(); ImGui::Text("%d", i); } | ||||||
|             ImGui::Text("Keys release:");   for (int i = 0; i < IM_ARRAYSIZE(io.KeysDown); i++) if (ImGui::IsKeyReleased(i))            { ImGui::SameLine(); ImGui::Text("%d", i); } |             ImGui::Text("Keys release:");   for (int i = 0; i < IM_ARRAYSIZE(io.KeysDown); i++) if (ImGui::IsKeyReleased(i))            { ImGui::SameLine(); ImGui::Text("%d", i); } | ||||||
|             ImGui::Text("KeyMods: %s%s%s", io.KeyCtrl ? "CTRL " : "", io.KeyShift ? "SHIFT " : "", io.KeyAlt ? "ALT " : ""); |             ImGui::Text("KeyMods: %s%s%s", io.KeyCtrl ? "CTRL " : "", io.KeyShift ? "SHIFT " : "", io.KeyAlt ? "ALT " : "", io.KeySuper ? "SUPER " : ""); | ||||||
|  |  | ||||||
|             ImGui::Text("WantCaptureMouse: %s", io.WantCaptureMouse ? "true" : "false"); |             ImGui::Text("WantCaptureMouse: %s", io.WantCaptureMouse ? "true" : "false"); | ||||||
|             ImGui::Text("WantCaptureKeyboard: %s", io.WantCaptureKeyboard ? "true" : "false"); |             ImGui::Text("WantCaptureKeyboard: %s", io.WantCaptureKeyboard ? "true" : "false"); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 ocornut
					ocornut