#ifndef DECL_INPUT_ACTION
#   define DECL_INPUT_ACTION(name, displayName, defaultScancode)
#endif

#ifndef DECL_DEV_MODE_INPUT_ACTION
#   define DECL_DEV_MODE_INPUT_ACTION(...) DECL_INPUT_ACTION(__VA_ARGS__)
#endif

DECL_INPUT_ACTION(forward, "Walk forward", SDL_SCANCODE_W)
DECL_INPUT_ACTION(backwards, "Walk backwards", SDL_SCANCODE_S)
DECL_INPUT_ACTION(left, "Walk left", SDL_SCANCODE_A)
DECL_INPUT_ACTION(right, "Walk right", SDL_SCANCODE_D)
DECL_INPUT_ACTION(jump, "Jump", SDL_SCANCODE_SPACE)
DECL_INPUT_ACTION(crouch, "Crouch", SDL_SCANCODE_LCTRL)
DECL_INPUT_ACTION(sprint, "Sprint", SDL_SCANCODE_LSHIFT)
DECL_INPUT_ACTION(inventory, "Inventory", SDL_SCANCODE_E)
DECL_INPUT_ACTION(dropItem, "Drop item", SDL_SCANCODE_Q)
DECL_INPUT_ACTION(thirdPerson, "Third person view", SDL_SCANCODE_F5)
DECL_INPUT_ACTION(toggleGadgets, "Toggle gadgets", SDL_SCANCODE_F4)
DECL_INPUT_ACTION(playerList, "Show player list", SDL_SCANCODE_TAB)
DECL_INPUT_ACTION(chat, "Open chat", SDL_SCANCODE_T)
DECL_INPUT_ACTION(map, "Map", SDL_SCANCODE_M)

DECL_DEV_MODE_INPUT_ACTION(debugOverlay, "Toggle the debug overlay", SDL_SCANCODE_F3)
DECL_DEV_MODE_INPUT_ACTION(gpuDebugMode, "Switch GPU debug mode", SDL_SCANCODE_F9)
DECL_DEV_MODE_INPUT_ACTION(debugPopup, "Show the debug popup", SDL_SCANCODE_F8)

#undef DECL_INPUT_ACTION