5. API Specification

/* Lifecycle */
d3tui_input_handler_t *d3tui_input_create(void);
void d3tui_input_destroy(d3tui_input_handler_t *handler);

/* Update */
void d3tui_input_update(d3tui_input_handler_t *handler);

/* Controller */
const d3tui_controller_state_t *d3tui_input_get_controller(
    const d3tui_input_handler_t *handler);
bool d3tui_input_button_pressed(const d3tui_input_handler_t *handler,
                               d3tui_controller_button_t button);
bool d3tui_input_button_just_pressed(const d3tui_input_handler_t *handler,
                                    d3tui_controller_button_t button);
bool d3tui_input_button_just_released(const d3tui_input_handler_t *handler,
                                     d3tui_controller_button_t button);

/* Input buffer */
size_t d3tui_input_available(const d3tui_input_handler_t *handler);
bool d3tui_input_get_event(d3tui_input_handler_t *handler,
                          d3tui_key_event_t *event);
void d3tui_input_clear_buffer(d3tui_input_handler_t *handler);

/* Key bindings */
void d3tui_input_set_binding(d3tui_input_handler_t *handler,
                            uint32_t key, uint8_t modifiers,
                            const char *sequence);
void d3tui_input_remove_binding(d3tui_input_handler_t *handler,
                                 uint32_t key, uint8_t modifiers);
void d3tui_input_clear_bindings(d3tui_input_handler_t *handler);

/* Text input */
size_t d3tui_input_get_text(d3tui_input_handler_t *handler,
                            char *buffer, size_t size);