/** * @file src/input.h * @brief Declarations for gamepad, keyboard, and mouse input handling. */ #pragma once // standard includes #include // local includes #include "platform/common.h" #include "thread_safe.h" namespace input { struct input_t; void print(void *input); void reset(std::shared_ptr &input); void passthrough(std::shared_ptr &input, std::vector &&input_data); [[nodiscard]] std::unique_ptr init(); bool probe_gamepads(); std::shared_ptr alloc(safe::mail_t mail); struct touch_port_t: public platf::touch_port_t { int env_width, env_height; // Offset x and y coordinates of the client float client_offsetX, client_offsetY; float scalar_inv; explicit operator bool() const { return width != 0 && height != 0 && env_width != 0 && env_height != 0; } }; /** * @brief Scale the ellipse axes according to the provided size. * @param val The major and minor axis pair. * @param rotation The rotation value from the touch/pen event. * @param scalar The scalar cartesian coordinate pair. * @return The major and minor axis pair. */ std::pair scale_client_contact_area(const std::pair &val, uint16_t rotation, const std::pair &scalar); } // namespace input