MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/SPlisHSPlasH / UpdateKeyboardInputs

Method UpdateKeyboardInputs

extern/imgui/imgui.cpp:4344–4460  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4342}
4343
4344static void ImGui::UpdateKeyboardInputs()
4345{
4346 ImGuiContext& g = *GImGui;
4347 ImGuiIO& io = g.IO;
4348
4349 // Import legacy keys or verify they are not used
4350#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
4351 if (io.BackendUsingLegacyKeyArrays == 0)
4352 {
4353 // Backend used new io.AddKeyEvent() API: Good! Verify that old arrays are never written to externally.
4354 for (int n = 0; n < ImGuiKey_LegacyNativeKey_END; n++)
4355 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!");
4356 }
4357 else
4358 {
4359 if (g.FrameCount == 0)
4360 for (int n = ImGuiKey_LegacyNativeKey_BEGIN; n < ImGuiKey_LegacyNativeKey_END; n++)
4361 IM_ASSERT(g.IO.KeyMap[n] == -1 && "Backend is not allowed to write to io.KeyMap[0..511]!");
4362
4363 // Build reverse KeyMap (Named -> Legacy)
4364 for (int n = ImGuiKey_NamedKey_BEGIN; n < ImGuiKey_NamedKey_END; n++)
4365 if (io.KeyMap[n] != -1)
4366 {
4367 IM_ASSERT(IsLegacyKey((ImGuiKey)io.KeyMap[n]));
4368 io.KeyMap[io.KeyMap[n]] = n;
4369 }
4370
4371 // Import legacy keys into new ones
4372 for (int n = ImGuiKey_LegacyNativeKey_BEGIN; n < ImGuiKey_LegacyNativeKey_END; n++)
4373 if (io.KeysDown[n] || io.BackendUsingLegacyKeyArrays == 1)
4374 {
4375 const ImGuiKey key = (ImGuiKey)(io.KeyMap[n] != -1 ? io.KeyMap[n] : n);
4376 IM_ASSERT(io.KeyMap[n] == -1 || IsNamedKey(key));
4377 io.KeysData[key].Down = io.KeysDown[n];
4378 if (key != n)
4379 io.KeysDown[key] = io.KeysDown[n]; // Allow legacy code using io.KeysDown[GetKeyIndex()] with old backends
4380 io.BackendUsingLegacyKeyArrays = 1;
4381 }
4382 if (io.BackendUsingLegacyKeyArrays == 1)
4383 {
4384 GetKeyData(ImGuiMod_Ctrl)->Down = io.KeyCtrl;
4385 GetKeyData(ImGuiMod_Shift)->Down = io.KeyShift;
4386 GetKeyData(ImGuiMod_Alt)->Down = io.KeyAlt;
4387 GetKeyData(ImGuiMod_Super)->Down = io.KeySuper;
4388 }
4389 }
4390
4391#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
4392 const bool nav_gamepad_active = (io.ConfigFlags & ImGuiConfigFlags_NavEnableGamepad) != 0 && (io.BackendFlags & ImGuiBackendFlags_HasGamepad) != 0;
4393 if (io.BackendUsingLegacyNavInputArray && nav_gamepad_active)
4394 {
4395 #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)
4396 #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)
4397 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadFaceDown, ImGuiNavInput_Activate);
4398 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadFaceRight, ImGuiNavInput_Cancel);
4399 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadFaceLeft, ImGuiNavInput_Menu);
4400 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadFaceUp, ImGuiNavInput_Input);
4401 MAP_LEGACY_NAV_INPUT_TO_KEY1(ImGuiKey_GamepadDpadLeft, ImGuiNavInput_DpadLeft);

Callers

nothing calls this directly

Calls 6

IsLegacyKeyFunction · 0.85
IsNamedKeyFunction · 0.85
UpdateAliasKeyFunction · 0.85
MouseButtonToKeyFunction · 0.85
GetMergedModsFromKeysFunction · 0.85
UpdateKeyRoutingTableFunction · 0.85

Tested by

no test coverage detected