enum key : int { Key_Unknown, Key_Escape, Key_Grave, Key_1, Key_2, Key_3, Key_4, Key_5, Key_6, Key_7, Key_8, Key_9, Key_0, Key_Minus, Key_Equal, Key_Backspace, Key_Tab, Key_Q, Key_W, Key_E, Key_R, Key_T, Key_Y, Key_U, Key_I, Key_O, Key_P, Key_LeftBracket, Key_RightBracket, Key_Enter, Key_CapsLock, Key_A, Key_S, Key_D, Key_F, Key_G, Key_H, Key_J, Key_K, Key_L, Key_Semicolon, Key_Apostrophe, Key_LeftShift, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_N, Key_M, Key_Comma, Key_Period, Key_Slash, Key_RightShift, Key_LeftCtrl, Key_LeftAlt, Key_Space, Key_RightAlt, Key_RightCtrl, Key_ArrowLeft, Key_ArrowRight, Key_ArrowUp, Key_ArrowDown, Key_Home, Key_End, Key_PageUp, Key_PageDown, Key_Insert, Key_Delete, Key_F1, Key_F2, Key_F3, Key_F4, Key_F5, Key_F6, Key_F7, Key_F8, Key_F9, Key_F10, Key_F11, Key_F12, Key_Count, }; struct window { uintptr_t handle; }; struct window_size { uint32_t width; uint32_t height; }; enum mouse_button : int { MouseButton_None = 0, MouseButton_Left, MouseButton_Right, MouseButton_Middle, MouseButton_Count, }; enum window_event_type { WindowEvent_KeyDown, WindowEvent_KeyUp, WindowEvent_MouseDown, WindowEvent_MouseUp, WindowEvent_MouseMove, WindowEvent_Resize, WindowEvent_Repaint, WindowEvent_Quit }; struct window_event { window_event_type type; union { key Key; struct { mouse_button Button; int32_t x; int32_t y; } Mouse; }; }; #define KEY_COUNT ((uint32_t)Key_Count) #ifdef _WIN32 #include "commons/wins/wins_windows.cc" #else #include "commons/wins/wins_linux.cc" #endif