input_converter.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. namespace Common::Input {
  5. struct CallbackStatus;
  6. enum class BatteryLevel : u32;
  7. using BatteryStatus = BatteryLevel;
  8. struct AnalogStatus;
  9. struct ButtonStatus;
  10. struct MotionStatus;
  11. struct StickStatus;
  12. struct TouchStatus;
  13. struct TriggerStatus;
  14. }; // namespace Common::Input
  15. namespace Core::HID {
  16. /**
  17. * Converts raw input data into a valid battery status.
  18. *
  19. * @param callback Supported callbacks: Analog, Battery, Trigger.
  20. * @return A valid BatteryStatus object.
  21. */
  22. Common::Input::BatteryStatus TransformToBattery(const Common::Input::CallbackStatus& callback);
  23. /**
  24. * Converts raw input data into a valid button status. Applies invert properties to the output.
  25. *
  26. * @param callback Supported callbacks: Analog, Button, Trigger.
  27. * @return A valid TouchStatus object.
  28. */
  29. Common::Input::ButtonStatus TransformToButton(const Common::Input::CallbackStatus& callback);
  30. /**
  31. * Converts raw input data into a valid motion status.
  32. *
  33. * @param callback Supported callbacks: Motion.
  34. * @return A valid TouchStatus object.
  35. */
  36. Common::Input::MotionStatus TransformToMotion(const Common::Input::CallbackStatus& callback);
  37. /**
  38. * Converts raw input data into a valid stick status. Applies offset, deadzone, range and invert
  39. * properties to the output.
  40. *
  41. * @param callback Supported callbacks: Stick.
  42. * @return A valid StickStatus object.
  43. */
  44. Common::Input::StickStatus TransformToStick(const Common::Input::CallbackStatus& callback);
  45. /**
  46. * Converts raw input data into a valid touch status.
  47. *
  48. * @param callback Supported callbacks: Touch.
  49. * @return A valid TouchStatus object.
  50. */
  51. Common::Input::TouchStatus TransformToTouch(const Common::Input::CallbackStatus& callback);
  52. /**
  53. * Converts raw input data into a valid trigger status. Applies offset, deadzone, range and
  54. * invert properties to the output. Button status uses the threshold property if necessary.
  55. *
  56. * @param callback Supported callbacks: Analog, Button, Trigger.
  57. * @return A valid TriggerStatus object.
  58. */
  59. Common::Input::TriggerStatus TransformToTrigger(const Common::Input::CallbackStatus& callback);
  60. /**
  61. * Converts raw input data into a valid analog status. Applies offset, deadzone, range and
  62. * invert properties to the output.
  63. *
  64. * @param callback Supported callbacks: Analog.
  65. * @return A valid AnalogStatus object.
  66. */
  67. Common::Input::AnalogStatus TransformToAnalog(const Common::Input::CallbackStatus& callback);
  68. /**
  69. * Converts raw input data into a valid camera status.
  70. *
  71. * @param callback Supported callbacks: Camera.
  72. * @return A valid CameraObject object.
  73. */
  74. Common::Input::CameraStatus TransformToCamera(const Common::Input::CallbackStatus& callback);
  75. /**
  76. * Converts raw analog data into a valid analog value
  77. * @param analog An analog object containing raw data and properties
  78. * @param clamp_value determines if the value needs to be clamped between -1.0f and 1.0f.
  79. */
  80. void SanitizeAnalog(Common::Input::AnalogStatus& analog, bool clamp_value);
  81. /**
  82. * Converts raw stick data into a valid stick value
  83. * @param analog_x raw analog data and properties for the x-axis
  84. * @param analog_y raw analog data and properties for the y-axis
  85. * @param clamp_value bool that determines if the value needs to be clamped into the unit circle.
  86. */
  87. void SanitizeStick(Common::Input::AnalogStatus& analog_x, Common::Input::AnalogStatus& analog_y,
  88. bool clamp_value);
  89. } // namespace Core::HID