mouse.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <array>
  6. #include "common/common_types.h"
  7. #include "common/swap.h"
  8. #include "core/frontend/input.h"
  9. #include "core/hle/service/hid/controllers/controller_base.h"
  10. #include "core/settings.h"
  11. namespace Service::HID {
  12. class Controller_Mouse final : public ControllerBase {
  13. public:
  14. explicit Controller_Mouse(Core::System& system);
  15. ~Controller_Mouse() override;
  16. // Called when the controller is initialized
  17. void OnInit() override;
  18. // When the controller is released
  19. void OnRelease() override;
  20. // When the controller is requesting an update for the shared memory
  21. void OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* data, std::size_t size) override;
  22. // Called when input devices should be loaded
  23. void OnLoadInputDevices() override;
  24. private:
  25. struct MouseState {
  26. s64_le sampling_number;
  27. s64_le sampling_number2;
  28. s32_le x;
  29. s32_le y;
  30. s32_le delta_x;
  31. s32_le delta_y;
  32. s32_le mouse_wheel_x;
  33. s32_le mouse_wheel_y;
  34. s32_le button;
  35. s32_le attribute;
  36. };
  37. static_assert(sizeof(MouseState) == 0x30, "MouseState is an invalid size");
  38. struct SharedMemory {
  39. CommonHeader header;
  40. std::array<MouseState, 17> mouse_states;
  41. };
  42. SharedMemory shared_memory{};
  43. std::unique_ptr<Input::MouseDevice> mouse_device;
  44. std::array<std::unique_ptr<Input::ButtonDevice>, Settings::NativeMouseButton::NumMouseButtons>
  45. mouse_button_devices;
  46. };
  47. } // namespace Service::HID