@@ -7,6 +7,13 @@ std::set<ImGuiKey> getPressedKeys(SDL_Window& sdlWindow) {
77 std::unique_lock lock (ImGuiRenderer::getImGuiRenderer (sdlWindow)->setActiveContext ());
88 std::set<ImGuiKey> pressedKeys;
99 for (int key = ImGuiKey_NamedKey_BEGIN; key < ImGuiKey_NamedKey_END; key++) {
10+ if (
11+ key == ImGuiKey_ReservedForModCtrl ||
12+ key == ImGuiKey_ReservedForModShift ||
13+ key == ImGuiKey_ReservedForModAlt ||
14+ key == ImGuiKey_ReservedForModSuper ||
15+ ImGui::IsLRModKey ((ImGuiKey)key)
16+ ) continue ;
1017 if (ImGui::IsKeyPressed ((ImGuiKey)key)) pressedKeys.insert ((ImGuiKey)key);
1118 }
1219 if (ImGui::IsKeyDown (ImGuiKey::ImGuiMod_Ctrl)) pressedKeys.insert (ImGuiKey::ImGuiMod_Ctrl);
@@ -16,36 +23,50 @@ std::set<ImGuiKey> getPressedKeys(SDL_Window& sdlWindow) {
1623 return pressedKeys;
1724}
1825
26+ std::set<ImGuiKey> getHeldKeys (SDL_Window& sdlWindow) {
27+ std::unique_lock lock (ImGuiRenderer::getImGuiRenderer (sdlWindow)->setActiveContext ());
28+ std::set<ImGuiKey> pressedKeys;
29+ for (int key = ImGuiKey_NamedKey_BEGIN; key < ImGuiKey_NamedKey_END; key++) {
30+ if (
31+ key == ImGuiKey_ReservedForModCtrl ||
32+ key == ImGuiKey_ReservedForModShift ||
33+ key == ImGuiKey_ReservedForModAlt ||
34+ key == ImGuiKey_ReservedForModSuper ||
35+ ImGui::IsLRModKey ((ImGuiKey)key)
36+ ) continue ;
37+ if (ImGui::IsKeyDown ((ImGuiKey)key)) {
38+ pressedKeys.insert ((ImGuiKey)key);
39+ }
40+ }
41+ if (ImGui::IsKeyDown (ImGuiKey::ImGuiMod_Ctrl)) pressedKeys.insert (ImGuiKey::ImGuiMod_Ctrl);
42+ if (ImGui::IsKeyDown (ImGuiKey::ImGuiMod_Shift)) pressedKeys.insert (ImGuiKey::ImGuiMod_Shift);
43+ if (ImGui::IsKeyDown (ImGuiKey::ImGuiMod_Alt)) pressedKeys.insert (ImGuiKey::ImGuiMod_Alt);
44+ if (ImGui::IsKeyDown (ImGuiKey::ImGuiMod_Super)) pressedKeys.insert (ImGuiKey::ImGuiMod_Super);
45+ return pressedKeys;
46+ }
47+
1948bool isPressingKeybind (const Keybind& keybinds, const std::set<ImGuiKey>& pressedKeys) {
2049 if (
2150 ((ImGuiKey)(keybinds.getKeybind () & ~ImGuiKey::ImGuiMod_Mask_) != ImGuiKey::ImGuiKey_None) &&
2251 (!pressedKeys.contains ((ImGuiKey)(keybinds.getKeybind () & ~ImGuiKey::ImGuiMod_Mask_)))
2352 ) return false ;
2453 if (((keybinds.getKeybind () & ImGuiKey::ImGuiMod_Ctrl) != 0 ) != (
25- pressedKeys.contains (ImGuiKey::ImGuiMod_Ctrl)// ||
26- // pressedKeys.contains(ImGuiKey::ImGuiKey_RightCtrl) ||
27- // pressedKeys.contains(ImGuiKey::ImGuiKey_LeftCtrl)
54+ pressedKeys.contains (ImGuiKey::ImGuiMod_Ctrl)
2855 )) {
2956 return false ;
3057 }
3158 if (((keybinds.getKeybind () & ImGuiKey::ImGuiMod_Alt) != 0 ) != (
32- pressedKeys.contains (ImGuiKey::ImGuiMod_Alt)// ||
33- // pressedKeys.contains(ImGuiKey::ImGuiKey_RightAlt) ||
34- // pressedKeys.contains(ImGuiKey::ImGuiKey_LeftAlt)
59+ pressedKeys.contains (ImGuiKey::ImGuiMod_Alt)
3560 )) {
3661 return false ;
3762 }
3863 if (((keybinds.getKeybind () & ImGuiKey::ImGuiMod_Shift) != 0 ) != (
39- pressedKeys.contains (ImGuiKey::ImGuiMod_Shift)// ||
40- // pressedKeys.contains(ImGuiKey::ImGuiKey_RightShift) ||
41- // pressedKeys.contains(ImGuiKey::ImGuiKey_LeftShift)
64+ pressedKeys.contains (ImGuiKey::ImGuiMod_Shift)
4265 )) {
4366 return false ;
4467 }
4568 if (((keybinds.getKeybind () & ImGuiKey::ImGuiMod_Super) != 0 ) != (
46- pressedKeys.contains (ImGuiKey::ImGuiMod_Super)// ||
47- // pressedKeys.contains(ImGuiKey::ImGuiKey_RightSuper) ||
48- // pressedKeys.contains(ImGuiKey::ImGuiKey_LeftSuper)
69+ pressedKeys.contains (ImGuiKey::ImGuiMod_Super)
4970 )) {
5071 return false ;
5172 }
0 commit comments