#pragma once /** ****************************************************************************** * Xenia : Xbox 360 Emulator Research Project * ****************************************************************************** * Copyright 2013 Ben Vanik. All rights reserved. * * Released under the BSD license - see LICENSE in the root for more details. * ****************************************************************************** * * @modified Tom Clay, 2026 - Adapted for ReXGlue runtime */ #include #include #include #include #include namespace rex::ui { class Window; } namespace rex::input { class InputSystem : public system::IInputSystem { public: explicit InputSystem(rex::ui::Window* window); ~InputSystem() override; rex::ui::Window* window() const { return window_; } X_STATUS Setup() override; void Shutdown() override; void AddDriver(std::unique_ptr driver); void AttachWindow(rex::ui::Window* window); void SetActiveCallback(std::function callback); X_RESULT GetCapabilities(uint32_t user_index, uint32_t flags, X_INPUT_CAPABILITIES* out_caps); X_RESULT GetState(uint32_t user_index, X_INPUT_STATE* out_state); X_RESULT SetState(uint32_t user_index, X_INPUT_VIBRATION* vibration); X_RESULT GetKeystroke(uint32_t user_index, uint32_t flags, X_INPUT_KEYSTROKE* out_keystroke); private: rex::ui::Window* window_ = nullptr; std::vector> drivers_; }; /// Create a default InputSystem with SDL + NOP drivers. /// In tool mode, only the NOP driver is added. std::unique_ptr CreateDefaultInputSystem(bool tool_mode); } // namespace rex::input