Skip to content

Commit d3baaf6

Browse files
Updated ImGui UWP event handling
1 parent ba5466b commit d3baaf6

File tree

1 file changed

+38
-33
lines changed

1 file changed

+38
-33
lines changed

SampleBase/src/UWP/ImguiUWPEventHelper.cpp

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
/* Copyright 2015-2016 Egor Yusov
1+
/* Copyright 2025 Diligent Graphics LLC
2+
* Copyright 2015-2016 Egor Yusov
23
*
34
* Licensed under the Apache License, Version 2.0 (the "License");
45
* you may not use this file except in compliance with the License.
@@ -24,14 +25,14 @@
2425
// ---------------------------------------------------------------------------
2526
//
2627
// @file ImguiUWPEventHelper.cpp
27-
// @brief Helper:
28-
// translate and re-send mouse and keyboard events
28+
// @brief Helper:
29+
// translate and re-send mouse and keyboard events
2930
// from Windows Runtime message proc to imgui
30-
//
31+
//
3132
// @author Egor Yusov
3233
// @date 2015/06/30
3334
// @note This file is not part of the AntTweakBar library because
34-
// it is not recommended to pack Windows Runtime extensions
35+
// it is not recommended to pack Windows Runtime extensions
3536
// into a static library
3637
// ---------------------------------------------------------------------------
3738

@@ -249,72 +250,76 @@ void ImguiUWPEventHelper::UpdateKeyStates(_In_ Windows::UI::Core::KeyEventArgs^
249250
{
250251
if (ImGui::GetCurrentContext() == nullptr)
251252
return;
252-
253+
253254
ImGuiIO& io = ImGui::GetIO();
254-
int c = -1;
255+
int c = -1;
255256

256-
switch(args->VirtualKey)
257+
switch (args->VirtualKey)
257258
{
258259
case VirtualKey::Tab:
259-
io.KeysDown[VK_TAB] = IsDown;
260+
io.AddKeyEvent(ImGuiKey_Tab, IsDown);
260261
break;
261262
case VirtualKey::Up:
262-
io.KeysDown[VK_UP] = IsDown;
263+
io.AddKeyEvent(ImGuiKey_UpArrow, IsDown);
263264
break;
264265
case VirtualKey::Down:
265-
io.KeysDown[VK_DOWN] = IsDown;
266+
io.AddKeyEvent(ImGuiKey_DownArrow, IsDown);
266267
break;
267268
case VirtualKey::Left:
268-
io.KeysDown[VK_LEFT] = IsDown;
269+
io.AddKeyEvent(ImGuiKey_LeftArrow, IsDown);
269270
break;
270271
case VirtualKey::Right:
271-
io.KeysDown[VK_RIGHT] = IsDown;
272+
io.AddKeyEvent(ImGuiKey_RightArrow, IsDown);
272273
break;
273274
case VirtualKey::Insert:
274-
io.KeysDown[VK_INSERT] = IsDown;
275+
io.AddKeyEvent(ImGuiKey_Insert, IsDown);
275276
break;
276277
case VirtualKey::Delete:
277-
io.KeysDown[VK_DELETE] = IsDown;
278+
io.AddKeyEvent(ImGuiKey_Delete, IsDown);
278279
break;
279280
case VirtualKey::Back:
280-
io.KeysDown[VK_BACK] = IsDown;
281+
io.AddKeyEvent(ImGuiKey_Backspace, IsDown);
281282
break;
282283
case VirtualKey::PageUp:
283-
io.KeysDown[VK_PRIOR] = IsDown;
284+
io.AddKeyEvent(ImGuiKey_PageUp, IsDown);
284285
break;
285286
case VirtualKey::PageDown:
286-
io.KeysDown[VK_NEXT] = IsDown;
287+
io.AddKeyEvent(ImGuiKey_PageDown, IsDown);
287288
break;
288289
case VirtualKey::Home:
289-
io.KeysDown[VK_HOME] = IsDown;
290+
io.AddKeyEvent(ImGuiKey_Home, IsDown);
290291
break;
291292
case VirtualKey::End:
292-
io.KeysDown[VK_END] = IsDown;
293+
io.AddKeyEvent(ImGuiKey_End, IsDown);
293294
break;
294295
case VirtualKey::Enter:
295-
io.KeysDown[VK_RETURN] = IsDown;
296+
io.AddKeyEvent(ImGuiKey_Enter, IsDown);
296297
break;
297298
case VirtualKey::Escape:
298-
io.KeysDown[VK_ESCAPE] = IsDown;
299+
io.AddKeyEvent(ImGuiKey_Escape, IsDown);
299300
break;
300301
case VirtualKey::Space:
301-
io.KeysDown[VK_SPACE] = IsDown;
302+
io.AddKeyEvent(ImGuiKey_Space, IsDown);
302303
c = ' ';
303304
break;
305+
case VirtualKey::Shift:
306+
io.AddKeyEvent(ImGuiMod_Shift, IsDown);
307+
break;
308+
case VirtualKey::Control:
309+
io.AddKeyEvent(ImGuiMod_Ctrl, IsDown);
310+
break;
311+
case VirtualKey::Menu:
312+
io.AddKeyEvent(ImGuiMod_Alt, IsDown);
313+
break;
304314

305-
case VirtualKey::Divide: c = '/'; break;
306-
case VirtualKey::Multiply: c = '*'; break;
307-
case VirtualKey::Subtract: c = '-'; break;
308-
case VirtualKey::Add: c = '+'; break;
309-
case VirtualKey::Decimal: c = '.'; break;
310-
311-
case VirtualKey::Shift: io.KeyShift = IsDown; break;
312-
case VirtualKey::Control: io.KeyCtrl = IsDown; break;
313-
case VirtualKey::Menu: io.KeyAlt = IsDown; break;
315+
case VirtualKey::Divide: c = '/'; break;
316+
case VirtualKey::Multiply: c = '*'; break;
317+
case VirtualKey::Subtract: c = '-'; break;
318+
case VirtualKey::Add: c = '+'; break;
319+
case VirtualKey::Decimal: c = '.'; break;
314320

315321
default:
316322
c = VirtualKeyToChar(args->VirtualKey, io.KeyAlt, io.KeyShift, io.KeyCtrl);
317-
318323
}
319324
if (IsDown && c >= 0)
320325
io.AddInputCharacter(c);

0 commit comments

Comments
 (0)