MCPcopy Create free account
hub / github.com/RenderKit/embree / UpdateKeyboardInputs

Method UpdateKeyboardInputs

tutorials/common/imgui/imgui.cpp:4172–4280  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4170}
4171
4172static void ImGui::UpdateKeyboardInputs()
4173{
4174 ImGuiContext& g = *GImGui;
4175 ImGuiIO& io = g.IO;
4176
4177 // Import legacy keys or verify they are not used
4178#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
4179 if (io.BackendUsingLegacyKeyArrays == 0)
4180 {
4181 // Backend used new io.AddKeyEvent() API: Good! Verify that old arrays are never written to externally.
4182 for (int n = 0; n < ImGuiKey_LegacyNativeKey_END; n++)
4183 IM_ASSERT((io.KeysDown[n] == false || IsKeyDown((ImGuiKey)n)) && "Backend needs to either only use io.AddKeyEvent(), either only fill legacy io.KeysDown[] + io.KeyMap[]. Not both!");
4184 }
4185 else
4186 {
4187 if (g.FrameCount == 0)
4188 for (int n = ImGuiKey_LegacyNativeKey_BEGIN; n < ImGuiKey_LegacyNativeKey_END; n++)
4189 IM_ASSERT(g.IO.KeyMap[n] == -1 && "Backend is not allowed to write to io.KeyMap[0..511]!");
4190
4191 // Build reverse KeyMap (Named -> Legacy)
4192 for (int n = ImGuiKey_NamedKey_BEGIN; n < ImGuiKey_NamedKey_END; n++)
4193 if (io.KeyMap[n] != -1)
4194 {
4195 IM_ASSERT(IsLegacyKey((ImGuiKey)io.KeyMap[n]));
4196 io.KeyMap[io.KeyMap[n]] = n;
4197 }
4198
4199 // Import legacy keys into new ones
4200 for (int n = ImGuiKey_LegacyNativeKey_BEGIN; n < ImGuiKey_LegacyNativeKey_END; n++)
4201 if (io.KeysDown[n] || io.BackendUsingLegacyKeyArrays == 1)
4202 {
4203 const ImGuiKey key = (ImGuiKey)(io.KeyMap[n] != -1 ? io.KeyMap[n] : n);
4204 IM_ASSERT(io.KeyMap[n] == -1 || IsNamedKey(key));
4205 io.KeysData[key].Down = io.KeysDown[n];
4206 if (key != n)
4207 io.KeysDown[key] = io.KeysDown[n]; // Allow legacy code using io.KeysDown[GetKeyIndex()] with old backends
4208 io.BackendUsingLegacyKeyArrays = 1;
4209 }
4210 if (io.BackendUsingLegacyKeyArrays == 1)
4211 {
4212 GetKeyData(ImGuiMod_Ctrl)->Down = io.KeyCtrl;
4213 GetKeyData(ImGuiMod_Shift)->Down = io.KeyShift;
4214 GetKeyData(ImGuiMod_Alt)->Down = io.KeyAlt;
4215 GetKeyData(ImGuiMod_Super)->Down = io.KeySuper;
4216 }
4217 }
4218
4219#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
4220 const bool nav_gamepad_active = (io.ConfigFlags & ImGuiConfigFlags_NavEnableGamepad) != 0 && (io.BackendFlags & ImGuiBackendFlags_HasGamepad) != 0;
4221 if (io.BackendUsingLegacyNavInputArray && nav_gamepad_active)
4222 {
4223 #define MAP_LEGACY_NAV_INPUT_TO_KEY1(_KEY, _NAV1) do { io.KeysData[_KEY].Down = (io.NavInputs[_NAV1] > 0.0f); io.KeysData[_KEY].AnalogValue = io.NavInputs[_NAV1]; } while (0)
4224 #define MAP_LEGACY_NAV_INPUT_TO_KEY2(_KEY, _NAV1, _NAV2) do { io.KeysData[_KEY].Down = (io.NavInputs[_NAV1] > 0.0f) || (io.NavInputs[_NAV2] > 0.0f); io.KeysData[_KEY].AnalogValue = ImMax(io.NavInputs[_NAV1], io.NavInputs[_NAV2]); } while (0)
4225 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadFaceDown, ImGuiNavInput_Activate);
4226 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadFaceRight, ImGuiNavInput_Cancel);
4227 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadFaceLeft, ImGuiNavInput_Menu);
4228 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadFaceUp, ImGuiNavInput_Input);
4229 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadDpadLeft, ImGuiNavInput_DpadLeft);

Callers

nothing calls this directly

Calls 6

IsLegacyKeyFunction · 0.85
IsNamedKeyFunction · 0.85
GetMergedModsFromBoolsFunction · 0.85
UpdateAliasKeyFunction · 0.85
MouseButtonToKeyFunction · 0.85
UpdateKeyRoutingTableFunction · 0.85

Tested by

no test coverage detected