summaryrefslogtreecommitdiff
path: root/src/input_common/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/input_common/main.cpp')
-rw-r--r--src/input_common/main.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp
index ff23230f0..4f170493e 100644
--- a/src/input_common/main.cpp
+++ b/src/input_common/main.cpp
@@ -13,6 +13,8 @@
13#include "input_common/motion_from_button.h" 13#include "input_common/motion_from_button.h"
14#include "input_common/mouse/mouse_input.h" 14#include "input_common/mouse/mouse_input.h"
15#include "input_common/mouse/mouse_poller.h" 15#include "input_common/mouse/mouse_poller.h"
16#include "input_common/tas/tas_input.h"
17#include "input_common/tas/tas_poller.h"
16#include "input_common/touch_from_button.h" 18#include "input_common/touch_from_button.h"
17#include "input_common/udp/client.h" 19#include "input_common/udp/client.h"
18#include "input_common/udp/udp.h" 20#include "input_common/udp/udp.h"
@@ -60,6 +62,12 @@ struct InputSubsystem::Impl {
60 Input::RegisterFactory<Input::MotionDevice>("mouse", mousemotion); 62 Input::RegisterFactory<Input::MotionDevice>("mouse", mousemotion);
61 mousetouch = std::make_shared<MouseTouchFactory>(mouse); 63 mousetouch = std::make_shared<MouseTouchFactory>(mouse);
62 Input::RegisterFactory<Input::TouchDevice>("mouse", mousetouch); 64 Input::RegisterFactory<Input::TouchDevice>("mouse", mousetouch);
65
66 tas = std::make_shared<TasInput::Tas>();
67 tasbuttons = std::make_shared<TasButtonFactory>(tas);
68 Input::RegisterFactory<Input::ButtonDevice>("tas", tasbuttons);
69 tasanalog = std::make_shared<TasAnalogFactory>(tas);
70 Input::RegisterFactory<Input::AnalogDevice>("tas", tasanalog);
63 } 71 }
64 72
65 void Shutdown() { 73 void Shutdown() {
@@ -94,12 +102,19 @@ struct InputSubsystem::Impl {
94 mouseanalog.reset(); 102 mouseanalog.reset();
95 mousemotion.reset(); 103 mousemotion.reset();
96 mousetouch.reset(); 104 mousetouch.reset();
105
106 Input::UnregisterFactory<Input::ButtonDevice>("tas");
107 Input::UnregisterFactory<Input::AnalogDevice>("tas");
108
109 tasbuttons.reset();
110 tasanalog.reset();
97 } 111 }
98 112
99 [[nodiscard]] std::vector<Common::ParamPackage> GetInputDevices() const { 113 [[nodiscard]] std::vector<Common::ParamPackage> GetInputDevices() const {
100 std::vector<Common::ParamPackage> devices = { 114 std::vector<Common::ParamPackage> devices = {
101 Common::ParamPackage{{"display", "Any"}, {"class", "any"}}, 115 Common::ParamPackage{{"display", "Any"}, {"class", "any"}},
102 Common::ParamPackage{{"display", "Keyboard/Mouse"}, {"class", "keyboard"}}, 116 Common::ParamPackage{{"display", "Keyboard/Mouse"}, {"class", "keyboard"}},
117 Common::ParamPackage{{"display", "TAS"}, {"class", "tas"}},
103 }; 118 };
104#ifdef HAVE_SDL2 119#ifdef HAVE_SDL2
105 auto sdl_devices = sdl->GetInputDevices(); 120 auto sdl_devices = sdl->GetInputDevices();
@@ -120,6 +135,9 @@ struct InputSubsystem::Impl {
120 if (params.Get("class", "") == "gcpad") { 135 if (params.Get("class", "") == "gcpad") {
121 return gcadapter->GetAnalogMappingForDevice(params); 136 return gcadapter->GetAnalogMappingForDevice(params);
122 } 137 }
138 if (params.Get("class", "") == "tas") {
139 return tas->GetAnalogMappingForDevice(params);
140 }
123#ifdef HAVE_SDL2 141#ifdef HAVE_SDL2
124 if (params.Get("class", "") == "sdl") { 142 if (params.Get("class", "") == "sdl") {
125 return sdl->GetAnalogMappingForDevice(params); 143 return sdl->GetAnalogMappingForDevice(params);
@@ -136,6 +154,9 @@ struct InputSubsystem::Impl {
136 if (params.Get("class", "") == "gcpad") { 154 if (params.Get("class", "") == "gcpad") {
137 return gcadapter->GetButtonMappingForDevice(params); 155 return gcadapter->GetButtonMappingForDevice(params);
138 } 156 }
157 if (params.Get("class", "") == "tas") {
158 return tas->GetButtonMappingForDevice(params);
159 }
139#ifdef HAVE_SDL2 160#ifdef HAVE_SDL2
140 if (params.Get("class", "") == "sdl") { 161 if (params.Get("class", "") == "sdl") {
141 return sdl->GetButtonMappingForDevice(params); 162 return sdl->GetButtonMappingForDevice(params);
@@ -174,9 +195,12 @@ struct InputSubsystem::Impl {
174 std::shared_ptr<MouseAnalogFactory> mouseanalog; 195 std::shared_ptr<MouseAnalogFactory> mouseanalog;
175 std::shared_ptr<MouseMotionFactory> mousemotion; 196 std::shared_ptr<MouseMotionFactory> mousemotion;
176 std::shared_ptr<MouseTouchFactory> mousetouch; 197 std::shared_ptr<MouseTouchFactory> mousetouch;
198 std::shared_ptr<TasButtonFactory> tasbuttons;
199 std::shared_ptr<TasAnalogFactory> tasanalog;
177 std::shared_ptr<CemuhookUDP::Client> udp; 200 std::shared_ptr<CemuhookUDP::Client> udp;
178 std::shared_ptr<GCAdapter::Adapter> gcadapter; 201 std::shared_ptr<GCAdapter::Adapter> gcadapter;
179 std::shared_ptr<MouseInput::Mouse> mouse; 202 std::shared_ptr<MouseInput::Mouse> mouse;
203 std::shared_ptr<TasInput::Tas> tas;
180}; 204};
181 205
182InputSubsystem::InputSubsystem() : impl{std::make_unique<Impl>()} {} 206InputSubsystem::InputSubsystem() : impl{std::make_unique<Impl>()} {}
@@ -207,6 +231,14 @@ const MouseInput::Mouse* InputSubsystem::GetMouse() const {
207 return impl->mouse.get(); 231 return impl->mouse.get();
208} 232}
209 233
234TasInput::Tas* InputSubsystem::GetTas() {
235 return impl->tas.get();
236}
237
238const TasInput::Tas* InputSubsystem::GetTas() const {
239 return impl->tas.get();
240}
241
210std::vector<Common::ParamPackage> InputSubsystem::GetInputDevices() const { 242std::vector<Common::ParamPackage> InputSubsystem::GetInputDevices() const {
211 return impl->GetInputDevices(); 243 return impl->GetInputDevices();
212} 244}
@@ -287,6 +319,22 @@ const MouseTouchFactory* InputSubsystem::GetMouseTouch() const {
287 return impl->mousetouch.get(); 319 return impl->mousetouch.get();
288} 320}
289 321
322TasButtonFactory* InputSubsystem::GetTasButtons() {
323 return impl->tasbuttons.get();
324}
325
326const TasButtonFactory* InputSubsystem::GetTasButtons() const {
327 return impl->tasbuttons.get();
328}
329
330TasAnalogFactory* InputSubsystem::GetTasAnalogs() {
331 return impl->tasanalog.get();
332}
333
334const TasAnalogFactory* InputSubsystem::GetTasAnalogs() const {
335 return impl->tasanalog.get();
336}
337
290void InputSubsystem::ReloadInputDevices() { 338void InputSubsystem::ReloadInputDevices() {
291 if (!impl->udp) { 339 if (!impl->udp) {
292 return; 340 return;