Files
tactility/Devices/simulator/Source/drivers/sdl_input.h
T
Adolfo Reyna 2060095028 feat(sim): web viewer at /sim + touch injection at /api/sim/touch
- GET /sim: live viewer page, 2s screenshot refresh, click-to-touch
- POST /api/sim/touch?x,y,down: injects into sdl-pointer backend,
  auto-releases after 1.5s; simulator-only (404 on ESP32)
- sdl_input: file-scope touch override state with extern C setters
2026-09-14 21:02:54 -04:00

58 lines
1.6 KiB
C

// SPDX-License-Identifier: Apache-2.0
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include <stdbool.h>
#include <stdint.h>
/**
* @brief Latest pointer (mouse) state as tracked by sdl_input_pump().
*/
struct SdlPointerState {
int32_t x;
int32_t y;
bool pressed;
};
/**
* @brief Drains all pending SDL events exactly once, updating the pointer state and key queue
* below. Safe to call from both the sdl-pointer and sdl-keyboard drivers' polling functions:
* SDL_PollEvent() drains a single global queue, so whichever driver is polled first on a given
* LVGL indev tick pumps events for both.
*/
void sdl_input_pump(void);
/**
* @brief Gets the pointer state as of the most recent sdl_input_pump() call.
*/
void sdl_input_get_pointer_state(struct SdlPointerState* out_state);
/**
* @brief Pops the next queued key event (produced by SDL_KEYDOWN/SDL_TEXTINPUT during
* sdl_input_pump()).
* @retval false when no key event is pending
*/
bool sdl_input_pop_key(uint32_t* out_key);
/**
* @brief Returns true if another key event is queued after the one just popped.
*/
bool sdl_input_has_queued_key(void);
/**
* @brief Web-injected touch override (for headless sim viewer without SDL window).
* When active, sdl_pointer_get_touched_points() reports this state instead of
* the SDL mouse state. Coordinates are in LVGL logical pixels (e.g. 640x480).
* Pass pressed=false to release. Auto-releases after SIM_TOUCH_HOLD_MS unless
* refreshed (tap = press, wait, release handled by the web viewer).
*/
void sdl_input_set_touch_override(int32_t x, int32_t y, bool pressed);
void sdl_input_clear_touch_override(void);
#ifdef __cplusplus
}
#endif