|
1 | | -/* Copyright 2015-2016 Egor Yusov |
| 1 | +/* Copyright 2025 Diligent Graphics LLC |
| 2 | + * Copyright 2015-2016 Egor Yusov |
2 | 3 | * |
3 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
4 | 5 | * you may not use this file except in compliance with the License. |
|
24 | 25 | // --------------------------------------------------------------------------- |
25 | 26 | // |
26 | 27 | // @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 |
29 | 30 | // from Windows Runtime message proc to imgui |
30 | | -// |
| 31 | +// |
31 | 32 | // @author Egor Yusov |
32 | 33 | // @date 2015/06/30 |
33 | 34 | // @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 |
35 | 36 | // into a static library |
36 | 37 | // --------------------------------------------------------------------------- |
37 | 38 |
|
@@ -249,72 +250,76 @@ void ImguiUWPEventHelper::UpdateKeyStates(_In_ Windows::UI::Core::KeyEventArgs^ |
249 | 250 | { |
250 | 251 | if (ImGui::GetCurrentContext() == nullptr) |
251 | 252 | return; |
252 | | - |
| 253 | + |
253 | 254 | ImGuiIO& io = ImGui::GetIO(); |
254 | | - int c = -1; |
| 255 | + int c = -1; |
255 | 256 |
|
256 | | - switch(args->VirtualKey) |
| 257 | + switch (args->VirtualKey) |
257 | 258 | { |
258 | 259 | case VirtualKey::Tab: |
259 | | - io.KeysDown[VK_TAB] = IsDown; |
| 260 | + io.AddKeyEvent(ImGuiKey_Tab, IsDown); |
260 | 261 | break; |
261 | 262 | case VirtualKey::Up: |
262 | | - io.KeysDown[VK_UP] = IsDown; |
| 263 | + io.AddKeyEvent(ImGuiKey_UpArrow, IsDown); |
263 | 264 | break; |
264 | 265 | case VirtualKey::Down: |
265 | | - io.KeysDown[VK_DOWN] = IsDown; |
| 266 | + io.AddKeyEvent(ImGuiKey_DownArrow, IsDown); |
266 | 267 | break; |
267 | 268 | case VirtualKey::Left: |
268 | | - io.KeysDown[VK_LEFT] = IsDown; |
| 269 | + io.AddKeyEvent(ImGuiKey_LeftArrow, IsDown); |
269 | 270 | break; |
270 | 271 | case VirtualKey::Right: |
271 | | - io.KeysDown[VK_RIGHT] = IsDown; |
| 272 | + io.AddKeyEvent(ImGuiKey_RightArrow, IsDown); |
272 | 273 | break; |
273 | 274 | case VirtualKey::Insert: |
274 | | - io.KeysDown[VK_INSERT] = IsDown; |
| 275 | + io.AddKeyEvent(ImGuiKey_Insert, IsDown); |
275 | 276 | break; |
276 | 277 | case VirtualKey::Delete: |
277 | | - io.KeysDown[VK_DELETE] = IsDown; |
| 278 | + io.AddKeyEvent(ImGuiKey_Delete, IsDown); |
278 | 279 | break; |
279 | 280 | case VirtualKey::Back: |
280 | | - io.KeysDown[VK_BACK] = IsDown; |
| 281 | + io.AddKeyEvent(ImGuiKey_Backspace, IsDown); |
281 | 282 | break; |
282 | 283 | case VirtualKey::PageUp: |
283 | | - io.KeysDown[VK_PRIOR] = IsDown; |
| 284 | + io.AddKeyEvent(ImGuiKey_PageUp, IsDown); |
284 | 285 | break; |
285 | 286 | case VirtualKey::PageDown: |
286 | | - io.KeysDown[VK_NEXT] = IsDown; |
| 287 | + io.AddKeyEvent(ImGuiKey_PageDown, IsDown); |
287 | 288 | break; |
288 | 289 | case VirtualKey::Home: |
289 | | - io.KeysDown[VK_HOME] = IsDown; |
| 290 | + io.AddKeyEvent(ImGuiKey_Home, IsDown); |
290 | 291 | break; |
291 | 292 | case VirtualKey::End: |
292 | | - io.KeysDown[VK_END] = IsDown; |
| 293 | + io.AddKeyEvent(ImGuiKey_End, IsDown); |
293 | 294 | break; |
294 | 295 | case VirtualKey::Enter: |
295 | | - io.KeysDown[VK_RETURN] = IsDown; |
| 296 | + io.AddKeyEvent(ImGuiKey_Enter, IsDown); |
296 | 297 | break; |
297 | 298 | case VirtualKey::Escape: |
298 | | - io.KeysDown[VK_ESCAPE] = IsDown; |
| 299 | + io.AddKeyEvent(ImGuiKey_Escape, IsDown); |
299 | 300 | break; |
300 | 301 | case VirtualKey::Space: |
301 | | - io.KeysDown[VK_SPACE] = IsDown; |
| 302 | + io.AddKeyEvent(ImGuiKey_Space, IsDown); |
302 | 303 | c = ' '; |
303 | 304 | 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; |
304 | 314 |
|
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; |
314 | 320 |
|
315 | 321 | default: |
316 | 322 | c = VirtualKeyToChar(args->VirtualKey, io.KeyAlt, io.KeyShift, io.KeyCtrl); |
317 | | - |
318 | 323 | } |
319 | 324 | if (IsDown && c >= 0) |
320 | 325 | io.AddInputCharacter(c); |
|
0 commit comments