From cf0e5f25c2e112359613a24e5e322c397d7af062 Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 8 Nov 2025 20:23:59 -0600 Subject: [PATCH] command palette hotkey testing --- src/base/base.h | 2 +- src/base/base_controller.h | 198 +++++++++--------- src/base/base_log.h | 12 +- src/base/base_math.h | 1 - src/json/json.h | 6 +- src/proto/pp_game.c | 270 ++++++++++++++++++++++--- src/proto/pp_game.h | 14 -- src/proto/pp_widgets.c | 2 +- src/ui/ui_core.c | 18 +- src/window/window_win32/window_win32.c | 86 ++++---- src/window/window_win32/window_win32.h | 2 +- 11 files changed, 406 insertions(+), 205 deletions(-) diff --git a/src/base/base.h b/src/base/base.h index 6f935bb4..2a5d553e 100644 --- a/src/base/base.h +++ b/src/base/base.h @@ -619,7 +619,7 @@ ForceInline void UnlockTicketMutex(TicketMutex *tm) #define STRING(size, data) ((String) { (size), (data) }) #define Zstr ((String) { 0, 0}) #define Lit(cstr_lit) (String) { (sizeof((cstr_lit)) - 1), (u8 *)(cstr_lit) } -#define LitNoCast(cstr_lit) { .len = (sizeof((cstr_lit)) - 1), .text = (u8 *)(cstr_lit) } +#define CompLit(cstr_lit) { .len = (sizeof((cstr_lit)) - 1), .text = (u8 *)(cstr_lit) } #define StringFromPointers(p0, p1) ((String) { (u8 *)(p1) - (u8 *)(p0), (u8 *)p0 }) #define StringFromStruct(ptr) ((String) { sizeof(*(ptr)), (u8 *)(ptr) }) #define StringFromArena(arena) (STRING((arena)->pos, ArenaBase(arena))) diff --git a/src/base/base_controller.h b/src/base/base_controller.h index 9f44e008..9d82bde1 100644 --- a/src/base/base_controller.h +++ b/src/base/base_controller.h @@ -1,112 +1,112 @@ //////////////////////////////////////////////////////////// //~ Controller button types -Enum(Btn) +Enum(Button) { - Btn_None, + Button_None, //- Mouse buttons - Btn_M1, - Btn_M2, - Btn_M3, - Btn_M4, - Btn_M5, + Button_M1, + Button_M2, + Button_M3, + Button_M4, + Button_M5, //- Mouse wheel - Btn_MWheelUp, - Btn_MWheelDown, + Button_MWheelUp, + Button_MWheelDown, //- Keyboard buttons - Btn_Esc, - Btn_F1, - Btn_F2, - Btn_F3, - Btn_F4, - Btn_F5, - Btn_F6, - Btn_F7, - Btn_F8, - Btn_F9, - Btn_F10, - Btn_F11, - Btn_F12, - Btn_F13, - Btn_F14, - Btn_F15, - Btn_F16, - Btn_F17, - Btn_F18, - Btn_F19, - Btn_F20, - Btn_F21, - Btn_F22, - Btn_F23, - Btn_F24, - Btn_GraveAccent, - Btn_0, - Btn_1, - Btn_2, - Btn_3, - Btn_4, - Btn_5, - Btn_6, - Btn_7, - Btn_8, - Btn_9, - Btn_Minus, - Btn_Equal, - Btn_Backspace, - Btn_Delete, - Btn_Tab, - Btn_A, - Btn_B, - Btn_C, - Btn_D, - Btn_E, - Btn_F, - Btn_G, - Btn_H, - Btn_I, - Btn_J, - Btn_K, - Btn_L, - Btn_M, - Btn_N, - Btn_O, - Btn_P, - Btn_Q, - Btn_R, - Btn_S, - Btn_T, - Btn_U, - Btn_V, - Btn_W, - Btn_X, - Btn_Y, - Btn_Z, - Btn_Space, - Btn_Enter, - Btn_Ctrl, - Btn_Shift, - Btn_Alt, - Btn_Up, - Btn_Left, - Btn_Down, - Btn_Right, - Btn_PageUp, - Btn_PageDown, - Btn_Home, - Btn_End, - Btn_ForwardSlash, - Btn_Period, - Btn_Comma, - Btn_Quote, - Btn_LeftBracket, - Btn_RightBracket, - Btn_Insert, - Btn_Semicolon, + Button_Esc, + Button_F1, + Button_F2, + Button_F3, + Button_F4, + Button_F5, + Button_F6, + Button_F7, + Button_F8, + Button_F9, + Button_F10, + Button_F11, + Button_F12, + Button_F13, + Button_F14, + Button_F15, + Button_F16, + Button_F17, + Button_F18, + Button_F19, + Button_F20, + Button_F21, + Button_F22, + Button_F23, + Button_F24, + Button_GraveAccent, + Button_0, + Button_1, + Button_2, + Button_3, + Button_4, + Button_5, + Button_6, + Button_7, + Button_8, + Button_9, + Button_Minus, + Button_Equal, + Button_Backspace, + Button_Delete, + Button_Tab, + Button_A, + Button_B, + Button_C, + Button_D, + Button_E, + Button_F, + Button_G, + Button_H, + Button_I, + Button_J, + Button_K, + Button_L, + Button_M, + Button_N, + Button_O, + Button_P, + Button_Q, + Button_R, + Button_S, + Button_T, + Button_U, + Button_V, + Button_W, + Button_X, + Button_Y, + Button_Z, + Button_Space, + Button_Enter, + Button_Ctrl, + Button_Shift, + Button_Alt, + Button_Up, + Button_Left, + Button_Down, + Button_Right, + Button_PageUp, + Button_PageDown, + Button_Home, + Button_End, + Button_ForwardSlash, + Button_Period, + Button_Comma, + Button_Quote, + Button_LeftBracket, + Button_RightBracket, + Button_Insert, + Button_Semicolon, - Btn_Count + Button_Count }; //////////////////////////////////////////////////////////// @@ -135,7 +135,7 @@ Struct(ControllerEvent) /* ControllerEventKind_ButtonDown */ /* ControllerEventKind_ButtonUp */ - Btn button; + Button button; b32 is_repeat; /* ControllerEventKind_Text */ diff --git a/src/base/base_log.h b/src/base/base_log.h index a4f3b474..e9dbc0bf 100644 --- a/src/base/base_log.h +++ b/src/base/base_log.h @@ -55,27 +55,27 @@ Struct(LogLevelSettings) Global Readonly LogLevelSettings log_settings[LogLevel_Count] = { [LogLevel_Critical] = { - LitNoCast("CRITICAL"), + CompLit("CRITICAL"), }, [LogLevel_Error] = { - LitNoCast("ERROR"), + CompLit("ERROR"), }, [LogLevel_Warning] = { - LitNoCast("WARNING"), + CompLit("WARNING"), }, [LogLevel_Success] = { - LitNoCast("SUCCESS"), + CompLit("SUCCESS"), }, [LogLevel_Info] = { - LitNoCast("INFO"), + CompLit("INFO"), }, [LogLevel_Debug] = { - LitNoCast("DEBUG"), + CompLit("DEBUG"), } }; diff --git a/src/base/base_math.h b/src/base/base_math.h index 3da44305..dadefd6a 100644 --- a/src/base/base_math.h +++ b/src/base/base_math.h @@ -347,7 +347,6 @@ b32 MatchXform(Xform xf1, Xform xf2); //- Initialization #define XformIdentity (Xform) { .bx = VEC2(1, 0), .by = VEC2(0, 1) } -#define XformIdentityNoCast { .bx = VEC2(1, 0), .by = VEC2(0, 1) } Xform XformFromPos(Vec2 v); Xform XformFromRot(f32 r); Xform XformFromScale(Vec2 scale); diff --git a/src/json/json.h b/src/json/json.h index 5f8fd27c..4f413d4a 100644 --- a/src/json/json.h +++ b/src/json/json.h @@ -114,9 +114,9 @@ Enum(JSON_LexNumberState) }; Global Readonly String JSON_keyword_strings[] = { - ['t'] = LitNoCast("true"), - ['f'] = LitNoCast("false"), - ['n'] = LitNoCast("null") + ['t'] = CompLit("true"), + ['f'] = CompLit("false"), + ['n'] = CompLit("null") }; Global Readonly JSON_TokenKind JSON_keyword_types[] = { diff --git a/src/proto/pp_game.c b/src/proto/pp_game.c index 34a2a61e..fd22288f 100644 --- a/src/proto/pp_game.c +++ b/src/proto/pp_game.c @@ -100,6 +100,102 @@ JobDef(PP_SimWorker, sig, job_id) //////////////////////////////////////////////////////////// //~ Vis worker + + +/* TODO: Remove this */ + + +#define PP_HOTKEY(...) { __VA_ARGS__ } + +Struct(PP_Hotkey) +{ + Button button; + b32 ctrl; + b32 shift; + b32 alt; +}; + +Struct(PP_Shortcut) +{ + PP_Shortcut *next_in_bin; + PP_Shortcut *prev_in_bin; + u64 hash; + PP_Hotkey hotkey; + String cmd_name; +}; + +Struct(PP_ShortcutBin) +{ + PP_Shortcut *first; + PP_Shortcut *last; +}; + +Enum(PP_VisCmdDescFlag) +{ + PP_VisCmdDescFlag_None = 0, + PP_VisCmdDescFlag_HideFromPalette = (1 << 0), +}; + +Struct(PP_VisCmdDesc) +{ + String name; + String display_name; + PP_Hotkey default_hotkey; + PP_VisCmdDescFlag flags; +}; + +Struct(PP_VisCmd) +{ + String name; +}; + +Struct(PP_VisCmdNode) +{ + PP_VisCmdNode *next; + PP_VisCmd cmd; +}; + +#define PP_VisCmdsTableXMacro(X) \ + X(none, None, PP_HOTKEY(0), PP_VisCmdDescFlag_HideFromPalette) \ + X(toggle_command_palette, Toggle Command Palette, PP_HOTKEY( .ctrl = 1, .shift = 1, .button = Button_P ), PP_VisCmdDescFlag_HideFromPalette) \ + X(toggle_ui_debug, Toggle UI Debug, PP_HOTKEY( .button = Button_F5 ), PP_VisCmdDescFlag_None) \ + X(toggle_console, Toggle Developer Console, PP_HOTKEY( .button = Button_GraveAccent ), PP_VisCmdDescFlag_None) \ + X(toggle_fullscreen, Toggle Fullscreen Mode, PP_HOTKEY( .alt = 1, .button = Button_Enter ), PP_VisCmdDescFlag_None) \ + X(toggle_window_topmost, Toggle Window Topmost, PP_HOTKEY( .button = Button_F4 ), PP_VisCmdDescFlag_None) \ + X(spawn, Spawn, PP_HOTKEY( .button = Button_S, .ctrl = 1 ), PP_VisCmdDescFlag_None) \ + /* -------------------------------------------------------------------------------------------------------------------- */ + +Enum(PP_VisCmdKind) +{ + #define X(name, ...) PP_VisCmdKind_##name, + PP_VisCmdsTableXMacro(X) + #undef X + + PP_VisCmdKind_Count, +}; + +Readonly PP_VisCmdDesc PP_vis_cmd_descs[PP_VisCmdKind_Count] = { + #define X(_name, _display_name, _default_hotkey, _flags) { .name = CompLit(#_name), .display_name = CompLit(#_display_name), .default_hotkey = _default_hotkey, .flags = _flags }, + PP_VisCmdsTableXMacro(X) + #undef X +}; + +// Struct(PP_VisCmd) +// { +// String name; +// }; + +// Struct(PP_VisCmdNode) +// { +// } + + + + + + + + JobDef(PP_VisWorker, sig, job_id) { PP_SharedState *shared = &PP_shared_state; @@ -113,11 +209,40 @@ JobDef(PP_VisWorker, sig, job_id) { PP_CommandsWidget commands_widget; b32 ui_debug; + b32 show_command_palette; b32 show_console; }; VisPersist persist = ZI; String window_restore = ZI; - // persist.ui_debug = 1; + + Button held_buttons[Button_Count] = ZI; + + /* Init shortcuts */ + u64 shortcut_bins_count = 1024; + PP_ShortcutBin *shortcut_bins = PushStructs(perm, PP_ShortcutBin, shortcut_bins_count); + { + for (u64 i = 1; i < countof(PP_vis_cmd_descs); ++i) + { + PP_VisCmdDesc desc = PP_vis_cmd_descs[i]; + PP_Hotkey hotkey = desc.default_hotkey; + u64 hash = HashFnv64(Fnv64Basis, StringFromStruct(&hotkey)); + { + PP_ShortcutBin *bin = &shortcut_bins[hash % shortcut_bins_count]; + PP_Shortcut *shortcut = PushStruct(perm, PP_Shortcut); + shortcut->hash = hash; + shortcut->hotkey = hotkey; + shortcut->cmd_name = desc.name; + DllPushBackNP(bin->first, bin->last, shortcut, next_in_bin, prev_in_bin); + } + } + // #define X(name, display, hotkey) \ + // do { + // // PP_Shortcut *shortcut = PushStruct( + // u64 hash = HashFnv64(Fnv64Basis, StringFromStruct(&hotkey)); + // } while (0) + // PP_VisCmdsTableXMacro(X) + // #undef X + } ////////////////////////////// //- Swap in @@ -152,7 +277,6 @@ JobDef(PP_VisWorker, sig, job_id) ////////////////////////////// //- Begin vis frame - UI_FrameFlag ui_frame_flags = 0; ui_frame_flags |= UI_FrameFlag_Debug * !!persist.ui_debug; ui_frame_flags |= UI_FrameFlag_Vsync * !!VSYNC; @@ -173,6 +297,73 @@ JobDef(PP_VisWorker, sig, job_id) PP_WidgetTheme theme = PP_GetWidgetTheme(); PP_PushWidgetThemeStyles(theme); + ////////////////////////////// + //- Process controller events vis cmds + + u64 cmds_count = 0; + PP_VisCmdNode *first_cmd_node = 0; + PP_VisCmdNode *last_cmd_node = 0; + + for (u64 i = 0; i < window_frame.controller_events.count; ++i) + { + ControllerEvent cev = window_frame.controller_events.events[i]; + b32 down = cev.kind == ControllerEventKind_ButtonDown; + b32 up = cev.kind == ControllerEventKind_ButtonUp; + if (down || up) + { + PP_Hotkey hotkey = ZI; + hotkey.button = cev.button; + hotkey.ctrl = held_buttons[Button_Ctrl]; + hotkey.shift = held_buttons[Button_Shift]; + hotkey.alt = held_buttons[Button_Alt]; + { + u64 hotkey_hash = HashFnv64(Fnv64Basis, StringFromStruct(&hotkey)); + PP_ShortcutBin *bin = &shortcut_bins[hotkey_hash % shortcut_bins_count]; + PP_Shortcut *shortcut = bin->first; + for (; shortcut; shortcut = shortcut->next_in_bin) + { + if (shortcut->hash == hotkey_hash) + { + break; + } + } + if (shortcut != 0 && down) + { + PP_VisCmdNode *cmd_node = PushStruct(frame_arena, PP_VisCmdNode); + cmd_node->cmd.name = shortcut->cmd_name; + QueuePush(first_cmd_node, last_cmd_node, cmd_node); + ++cmds_count; + } + } + held_buttons[hotkey.button] = down; + } + } + + ////////////////////////////// + //- Build command palette + + if (persist.show_command_palette) + { + PP_BeginCommandsWidget(&persist.commands_widget); + { + for (u64 i = 0; i < countof(PP_vis_cmd_descs); ++i) + { + PP_VisCmdDesc desc = PP_vis_cmd_descs[i]; + if (!desc.flags & PP_VisCmdDescFlag_HideFromPalette) + { + if (PP_PushCommandsWidgetItem(&persist.commands_widget, desc.display_name).m1_presses > 0) + { + PP_VisCmdNode *cmd_node = PushStruct(frame_arena, PP_VisCmdNode); + cmd_node->cmd.name = desc.name; + QueuePush(first_cmd_node, last_cmd_node, cmd_node); + ++cmds_count; + } + } + } + } + PP_EndCommandsWidget(&persist.commands_widget); + } + ////////////////////////////// //- Build console @@ -183,41 +374,64 @@ JobDef(PP_VisWorker, sig, job_id) } ////////////////////////////// - //- Build commands widget + //- Process vis cmds - PP_BeginCommandsWidget(&persist.commands_widget); + for (PP_VisCmdNode *cmd_node = first_cmd_node; cmd_node; cmd_node = cmd_node->next) { - if (PP_PushCommandsWidgetItem(&persist.commands_widget, Lit("Debug UI")).m1_presses > 0) + String cmd_name = cmd_node->cmd.name; + PP_VisCmdKind kind = PP_VisCmdKind_none; + for (PP_VisCmdKind tmp_kind = PP_VisCmdKind_none; tmp_kind < PP_VisCmdKind_Count; ++tmp_kind) { - persist.ui_debug = !persist.ui_debug; - } - if (PP_PushCommandsWidgetItem(&persist.commands_widget, Lit("Console")).m1_presses > 0) - { - b32 new = !persist.show_console; - if (new) + PP_VisCmdDesc desc = PP_vis_cmd_descs[tmp_kind]; + if (MatchString(desc.name, cmd_name)) { - LogInfoF("Enabled console"); + kind = tmp_kind; + break; } - persist.show_console = new; } - if (PP_PushCommandsWidgetItem(&persist.commands_widget, Lit("Fullscreen")).m1_presses > 0) + + switch (kind) { - b32 new = !window_frame.fullscreen; - WND_PushCmd(window_frame, .kind = WND_CmdKind_SetFullscreen, .v = new); - LogInfoF("Toggled fullscreen: %F", FmtSint(new)); - } - if (PP_PushCommandsWidgetItem(&persist.commands_widget, Lit("Topmost")).m1_presses > 0) - { - b32 new = !window_frame.forced_top; - WND_PushCmd(window_frame, .kind = WND_CmdKind_SetForcedTop, .v = new); - LogInfoF("Toggled topmost: %F", FmtSint(new)); - } - if (PP_PushCommandsWidgetItem(&persist.commands_widget, Lit("Spawn")).m1_presses > 0) - { - LogErrorF("RAAAAH"); + case PP_VisCmdKind_toggle_command_palette: + { + persist.show_command_palette = !persist.show_command_palette; + } break; + + case PP_VisCmdKind_toggle_ui_debug: + { + persist.ui_debug = !persist.ui_debug; + } break; + + case PP_VisCmdKind_toggle_console: + { + b32 new = !persist.show_console; + if (new) + { + LogInfoF("Enabled console"); + } + persist.show_console = new; + } break; + + case PP_VisCmdKind_toggle_fullscreen: + { + b32 new = !window_frame.fullscreen; + WND_PushCmd(window_frame, .kind = WND_CmdKind_SetFullscreen, .v = new); + LogInfoF("Toggled fullscreen: %F", FmtSint(new)); + } break; + + case PP_VisCmdKind_toggle_window_topmost: + { + b32 new = !window_frame.forced_top; + WND_PushCmd(window_frame, .kind = WND_CmdKind_SetForcedTop, .v = new); + LogInfoF("Toggled topmost: %F", FmtSint(new)); + } break; + + case PP_VisCmdKind_spawn: + { + LogErrorF("RAAAAH"); + } break; } } - PP_EndCommandsWidget(&persist.commands_widget); ////////////////////////////// //- Submit sim commands diff --git a/src/proto/pp_game.h b/src/proto/pp_game.h index d0e068d8..295b659d 100644 --- a/src/proto/pp_game.h +++ b/src/proto/pp_game.h @@ -13,20 +13,6 @@ Struct(PP_SimCmd) PP_SimCmd *next; }; -//////////////////////////////////////////////////////////// -//~ Vis cmd types - -Enum(PP_VisCmdKind) -{ - PP_VisCmdKind_None, - PP_VisCmdKind_Count, -}; - -Struct(PP_VisCmd) -{ - PP_VisCmd *next; -}; - //////////////////////////////////////////////////////////// //~ State types diff --git a/src/proto/pp_widgets.c b/src/proto/pp_widgets.c index 726419e8..477d5490 100644 --- a/src/proto/pp_widgets.c +++ b/src/proto/pp_widgets.c @@ -203,7 +203,7 @@ void PP_EndCommandsWidget(PP_CommandsWidget *widget) UI_PopCP(UI_TopCP()); UI_BuildSpacer(UI_PIX(padding, 1), Axis_Y); - UI_PopCP(UI_TopCP()); + UI_PopCP(widget->build.cp); } //////////////////////////////////////////////////////////// diff --git a/src/ui/ui_core.c b/src/ui/ui_core.c index 60802335..095f2654 100644 --- a/src/ui/ui_core.c +++ b/src/ui/ui_core.c @@ -518,7 +518,7 @@ UI_Frame UI_BeginFrame(UI_FrameFlag frame_flags) case ControllerEventKind_ButtonDown: { - if (cev.button == Btn_M1) + if (cev.button == Button_M1) { if (hovered_box) { @@ -532,7 +532,7 @@ UI_Frame UI_BeginFrame(UI_FrameFlag frame_flags) case ControllerEventKind_ButtonUp: { - if (cev.button == Btn_M1) + if (cev.button == Button_M1) { if (active_box) { @@ -676,7 +676,12 @@ i64 UI_EndFrame(UI_Frame frame) for (UI_CmdNode *cmd_node = g->bframe.first_cmd_node; cmd_node; cmd_node = cmd_node->next) { UI_Cmd cmd = cmd_node->cmd; + UI_Key key = cmd.key; + if (key.hash == 0) + { + key = UI_TransKey(); + } b32 is_root = g->eframe.root_box == 0; UI_Box *parent = 0; @@ -693,14 +698,11 @@ i64 UI_EndFrame(UI_Frame frame) UI_Box *box = 0; { UI_BoxBin *bin = &g->box_bins[key.hash % UI_NumBoxLookupBins]; - if (key.hash != 0) + for (UI_Box *tmp = bin->first; tmp && !box; tmp = tmp->next_in_bin) { - for (UI_Box *tmp = bin->first; tmp && !box; tmp = tmp->next_in_bin) + if (tmp->key.hash == key.hash) { - if (tmp->key.hash == key.hash) - { - box = tmp; - } + box = tmp; } } if (box) diff --git a/src/window/window_win32/window_win32.c b/src/window/window_win32/window_win32.c index d806fdda..78cc112c 100644 --- a/src/window/window_win32/window_win32.c +++ b/src/window/window_win32/window_win32.c @@ -9,47 +9,47 @@ void WND_Startup(void) //- Initialize btn table { - ZeroArray(g->vk_to_btn); - for (u32 i = 'A', j = Btn_A; i <= 'Z'; ++i, ++j) + ZeroArray(g->vk_to_button); + for (u32 i = 'A', j = Button_A; i <= 'Z'; ++i, ++j) { - g->vk_to_btn[i] = (Btn)j; + g->vk_to_button[i] = (Button)j; } - for (u32 i = '0', j = Btn_0; i <= '9'; ++i, ++j) + for (u32 i = '0', j = Button_0; i <= '9'; ++i, ++j) { - g->vk_to_btn[i] = (Btn)j; + g->vk_to_button[i] = (Button)j; } - for (u32 i = VK_F1, j = Btn_F1; i <= VK_F24; ++i, ++j) + for (u32 i = VK_F1, j = Button_F1; i <= VK_F24; ++i, ++j) { - g->vk_to_btn[i] = (Btn)j; + g->vk_to_button[i] = (Button)j; } - g->vk_to_btn[VK_ESCAPE] = Btn_Esc; - g->vk_to_btn[VK_OEM_3] = Btn_GraveAccent; - g->vk_to_btn[VK_OEM_MINUS] = Btn_Minus; - g->vk_to_btn[VK_OEM_PLUS] = Btn_Equal; - g->vk_to_btn[VK_BACK] = Btn_Backspace; - g->vk_to_btn[VK_TAB] = Btn_Tab; - g->vk_to_btn[VK_SPACE] = Btn_Space; - g->vk_to_btn[VK_RETURN] = Btn_Enter; - g->vk_to_btn[VK_CONTROL] = Btn_Ctrl; - g->vk_to_btn[VK_SHIFT] = Btn_Shift; - g->vk_to_btn[VK_MENU] = Btn_Alt; - g->vk_to_btn[VK_UP] = Btn_Up; - g->vk_to_btn[VK_LEFT] = Btn_Left; - g->vk_to_btn[VK_DOWN] = Btn_Down; - g->vk_to_btn[VK_RIGHT] = Btn_Right; - g->vk_to_btn[VK_DELETE] = Btn_Delete; - g->vk_to_btn[VK_PRIOR] = Btn_PageUp; - g->vk_to_btn[VK_NEXT] = Btn_PageDown; - g->vk_to_btn[VK_HOME] = Btn_Home; - g->vk_to_btn[VK_END] = Btn_End; - g->vk_to_btn[VK_OEM_2] = Btn_ForwardSlash; - g->vk_to_btn[VK_OEM_PERIOD] = Btn_Period; - g->vk_to_btn[VK_OEM_COMMA] = Btn_Comma; - g->vk_to_btn[VK_OEM_7] = Btn_Quote; - g->vk_to_btn[VK_OEM_4] = Btn_LeftBracket; - g->vk_to_btn[VK_OEM_6] = Btn_RightBracket; - g->vk_to_btn[VK_INSERT] = Btn_Insert; - g->vk_to_btn[VK_OEM_1] = Btn_Semicolon; + g->vk_to_button[VK_ESCAPE] = Button_Esc; + g->vk_to_button[VK_OEM_3] = Button_GraveAccent; + g->vk_to_button[VK_OEM_MINUS] = Button_Minus; + g->vk_to_button[VK_OEM_PLUS] = Button_Equal; + g->vk_to_button[VK_BACK] = Button_Backspace; + g->vk_to_button[VK_TAB] = Button_Tab; + g->vk_to_button[VK_SPACE] = Button_Space; + g->vk_to_button[VK_RETURN] = Button_Enter; + g->vk_to_button[VK_CONTROL] = Button_Ctrl; + g->vk_to_button[VK_SHIFT] = Button_Shift; + g->vk_to_button[VK_MENU] = Button_Alt; + g->vk_to_button[VK_UP] = Button_Up; + g->vk_to_button[VK_LEFT] = Button_Left; + g->vk_to_button[VK_DOWN] = Button_Down; + g->vk_to_button[VK_RIGHT] = Button_Right; + g->vk_to_button[VK_DELETE] = Button_Delete; + g->vk_to_button[VK_PRIOR] = Button_PageUp; + g->vk_to_button[VK_NEXT] = Button_PageDown; + g->vk_to_button[VK_HOME] = Button_Home; + g->vk_to_button[VK_END] = Button_End; + g->vk_to_button[VK_OEM_2] = Button_ForwardSlash; + g->vk_to_button[VK_OEM_PERIOD] = Button_Period; + g->vk_to_button[VK_OEM_COMMA] = Button_Comma; + g->vk_to_button[VK_OEM_7] = Button_Quote; + g->vk_to_button[VK_OEM_4] = Button_LeftBracket; + g->vk_to_button[VK_OEM_6] = Button_RightBracket; + g->vk_to_button[VK_INSERT] = Button_Insert; + g->vk_to_button[VK_OEM_1] = Button_Semicolon; } //- Create window class @@ -216,9 +216,9 @@ LRESULT CALLBACK WND_W32_WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM l { event.kind = ControllerEventKind_ButtonUp; } - if (vk_code < countof(g->vk_to_btn)) + if (vk_code < countof(g->vk_to_button)) { - event.button = g->vk_to_btn[vk_code]; + event.button = g->vk_to_button[vk_code]; } WND_W32_PushEvent(window, event); if (msg == WM_SYSKEYUP || msg == WM_SYSKEYDOWN) @@ -302,19 +302,19 @@ LRESULT CALLBACK WND_W32_WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM l } switch (msg) { - case WM_LBUTTONUP: case WM_LBUTTONDOWN: event.button = Btn_M1; break; - case WM_RBUTTONUP: case WM_RBUTTONDOWN: event.button = Btn_M2; break; - case WM_MBUTTONUP: case WM_MBUTTONDOWN: event.button = Btn_M3; break; + case WM_LBUTTONUP: case WM_LBUTTONDOWN: event.button = Button_M1; break; + case WM_RBUTTONUP: case WM_RBUTTONDOWN: event.button = Button_M2; break; + case WM_MBUTTONUP: case WM_MBUTTONDOWN: event.button = Button_M3; break; case WM_XBUTTONUP: case WM_XBUTTONDOWN: { u32 wparam_xbutton = GET_XBUTTON_WPARAM(wparam); if (wparam_xbutton == XBUTTON1) { - event.button = Btn_M4; + event.button = Button_M4; } else if (wparam_xbutton == XBUTTON2) { - event.button = Btn_M5; + event.button = Button_M5; } } break; } @@ -329,7 +329,7 @@ LRESULT CALLBACK WND_W32_WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM l { int delta = GET_WHEEL_DELTA_WPARAM(wparam); i32 dir = delta >= 0 ? 1 : -1; - Btn btn = dir >= 0 ? Btn_MWheelUp : Btn_MWheelDown; + Button btn = dir >= 0 ? Button_MWheelUp : Button_MWheelDown; for (i32 i = 0; i < (dir * delta); i += WHEEL_DELTA) { /* Send a button down & button up event simultaneously */ diff --git a/src/window/window_win32/window_win32.h b/src/window/window_win32/window_win32.h index 0ec2ef90..916d7988 100644 --- a/src/window/window_win32/window_win32.h +++ b/src/window/window_win32/window_win32.h @@ -64,7 +64,7 @@ Struct(WND_W32_CmdNode) Struct(WND_W32_SharedState) { - Btn vk_to_btn[256]; + Button vk_to_button[256]; WNDCLASSEXW window_class; WND_W32_Window window; /* Single-window for now */ } extern WND_W32_shared_state;