@@ -28,6 +28,7 @@ typedef struct {
28
28
} vs_params_t ;
29
29
30
30
static void draw_imgui (ImDrawData*);
31
+ static ImGuiKey as_imgui_key (int keycode);
31
32
32
33
int WINAPI WinMain (_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) {
33
34
(void )hInstance; (void )hPrevInstance; (void )lpCmdLine; (void )nCmdShow;
@@ -44,37 +45,20 @@ int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _
44
45
stm_setup ();
45
46
46
47
// input forwarding
47
- d3d11_mouse_pos ([] (float x, float y) { ImGui::GetIO ().MousePos = ImVec2 (x, y); });
48
- d3d11_mouse_btn_down ([] (int btn) { ImGui::GetIO ().MouseDown [ btn] = true ; });
49
- d3d11_mouse_btn_up ([] (int btn) { ImGui::GetIO ().MouseDown [ btn] = false ; });
50
- d3d11_mouse_wheel ([](float v) { ImGui::GetIO ().MouseWheel = v ; });
48
+ d3d11_mouse_pos ([] (float x, float y) { ImGui::GetIO ().AddMousePosEvent (x, y); });
49
+ d3d11_mouse_btn_down ([] (int btn) { ImGui::GetIO ().AddMouseButtonEvent ( btn, true ) ; });
50
+ d3d11_mouse_btn_up ([] (int btn) { ImGui::GetIO ().AddMouseButtonEvent ( btn, false ) ; });
51
+ d3d11_mouse_wheel ([](float v) { ImGui::GetIO ().AddMouseWheelEvent ( 0 , v) ; });
51
52
d3d11_char ([] (wchar_t c) { ImGui::GetIO ().AddInputCharacter (c); });
52
- d3d11_key_down ([] (int key) { if (key < 512 ) ImGui::GetIO ().KeysDown [ key] = true ; });
53
- d3d11_key_up ([] (int key) { if (key < 512 ) ImGui::GetIO ().KeysDown [ key] = false ; });
53
+ d3d11_key_down ([] (int key) { ImGui::GetIO ().AddKeyEvent ( as_imgui_key ( key), true ) ; });
54
+ d3d11_key_up ([] (int key) { ImGui::GetIO ().AddKeyEvent ( as_imgui_key ( key), false ) ; });
54
55
55
56
// setup Dear Imgui
56
57
ImGui::CreateContext ();
57
58
ImGui::StyleColorsDark ();
58
59
ImGuiIO& io = ImGui::GetIO ();
59
60
io.IniFilename = nullptr ;
60
61
io.Fonts ->AddFontDefault ();
61
- io.KeyMap [ImGuiKey_Tab] = VK_TAB;
62
- io.KeyMap [ImGuiKey_LeftArrow] = VK_LEFT;
63
- io.KeyMap [ImGuiKey_RightArrow] = VK_RIGHT;
64
- io.KeyMap [ImGuiKey_UpArrow] = VK_UP;
65
- io.KeyMap [ImGuiKey_DownArrow] = VK_DOWN;
66
- io.KeyMap [ImGuiKey_Home] = VK_HOME;
67
- io.KeyMap [ImGuiKey_End] = VK_END;
68
- io.KeyMap [ImGuiKey_Delete] = VK_DELETE;
69
- io.KeyMap [ImGuiKey_Backspace] = VK_BACK;
70
- io.KeyMap [ImGuiKey_Enter] = VK_RETURN;
71
- io.KeyMap [ImGuiKey_Escape] = VK_ESCAPE;
72
- io.KeyMap [ImGuiKey_A] = ' A' ;
73
- io.KeyMap [ImGuiKey_C] = ' C' ;
74
- io.KeyMap [ImGuiKey_V] = ' V' ;
75
- io.KeyMap [ImGuiKey_X] = ' X' ;
76
- io.KeyMap [ImGuiKey_Y] = ' Y' ;
77
- io.KeyMap [ImGuiKey_Z] = ' Z' ;
78
62
79
63
// dynamic vertex- and index-buffers for imgui-generated geometry
80
64
sg_buffer_desc vbuf_desc = { };
@@ -269,3 +253,20 @@ void draw_imgui(ImDrawData* draw_data) {
269
253
}
270
254
}
271
255
}
256
+
257
+ static ImGuiKey as_imgui_key (int keycode) {
258
+ switch (keycode) {
259
+ case VK_TAB: return ImGuiKey_Tab;
260
+ case VK_LEFT: return ImGuiKey_LeftArrow;
261
+ case VK_RIGHT: return ImGuiKey_RightArrow;
262
+ case VK_UP: return ImGuiKey_UpArrow;
263
+ case VK_DOWN: return ImGuiKey_DownArrow;
264
+ case VK_HOME: return ImGuiKey_Home;
265
+ case VK_END: return ImGuiKey_End;
266
+ case VK_DELETE: return ImGuiKey_Delete;
267
+ case VK_BACK: return ImGuiKey_Backspace;
268
+ case VK_RETURN: return ImGuiKey_Enter;
269
+ case VK_ESCAPE: return ImGuiKey_Escape;
270
+ default : return ImGuiKey_None;
271
+ }
272
+ }
0 commit comments