controllers.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "controllers.h"
  2. #include "config.h"
  3. #include "puck_hid.h"
  4. #include "mode_xinput.h"
  5. #include "mode_switch_hori.h"
  6. #include "mode_switch_pro.h"
  7. #include "mode_ps5.h"
  8. #include "mode_hidgyro.h"
  9. #include "mode_ps3.h"
  10. #include "mode_dinput.h"
  11. #include "mode_sinput.h"
  12. #include "mode_xbox_og.h"
  13. IController *g_active = nullptr;
  14. // Map a USB-presentation mode to its singleton controller. Steam and Lizard share the puck controller (the
  15. // lizard-vs-forward decision is made per-report inside it).
  16. IController *controllerFor(uint8_t mode)
  17. {
  18. switch (mode) {
  19. case MODE_STEAM:
  20. return &g_steamPuck;
  21. case MODE_LIZARD:
  22. return &g_steamPuck;
  23. case MODE_XBOX:
  24. return &g_xboxCtl;
  25. case MODE_XBOX_OG:
  26. return &g_xboxOgCtl;
  27. case MODE_SW_HORI:
  28. return &g_switchHori;
  29. case MODE_SW_PRO:
  30. return &g_switchPro;
  31. case MODE_PS5:
  32. return &g_ps5Ctl;
  33. case MODE_HIDGYRO:
  34. return &g_hidGyroCtl;
  35. case MODE_PS5_GAME:
  36. // same DualSense controller; setup() drops wake/WebUSB for clean enum
  37. return &g_ps5Ctl;
  38. case MODE_DS4_GAME:
  39. // same DS4 controller; setup() drops wake/WebUSB for clean enum
  40. return &g_hidGyroCtl;
  41. case MODE_PS3:
  42. return &g_ps3Ctl;
  43. case MODE_DINPUT:
  44. return &g_dinputCtl;
  45. case MODE_SINPUT:
  46. return &g_sinputCtl;
  47. default:
  48. return &g_steamPuck;
  49. }
  50. }