|
@@ -19,52 +19,53 @@ void EmulatedDevices::ReloadFromSettings() {
|
|
|
|
|
|
|
|
void EmulatedDevices::ReloadInput() {
|
|
void EmulatedDevices::ReloadInput() {
|
|
|
// If you load any device here add the equivalent to the UnloadInput() function
|
|
// If you load any device here add the equivalent to the UnloadInput() function
|
|
|
|
|
+
|
|
|
|
|
+ // Native Mouse is mapped on port 1, pad 0
|
|
|
|
|
+ const Common::ParamPackage mouse_params{"engine:mouse,port:1,pad:0"};
|
|
|
|
|
+
|
|
|
|
|
+ // Keyboard keys is mapped on port 1, pad 0 for normal keys, pad 1 for moddifier keys
|
|
|
|
|
+ const Common::ParamPackage keyboard_params{"engine:keyboard,port:1"};
|
|
|
|
|
+
|
|
|
std::size_t key_index = 0;
|
|
std::size_t key_index = 0;
|
|
|
for (auto& mouse_device : mouse_button_devices) {
|
|
for (auto& mouse_device : mouse_button_devices) {
|
|
|
- Common::ParamPackage mouse_params;
|
|
|
|
|
- mouse_params.Set("engine", "mouse");
|
|
|
|
|
- mouse_params.Set("button", static_cast<int>(key_index));
|
|
|
|
|
- mouse_device = Common::Input::CreateInputDevice(mouse_params);
|
|
|
|
|
|
|
+ Common::ParamPackage mouse_button_params = mouse_params;
|
|
|
|
|
+ mouse_button_params.Set("button", static_cast<int>(key_index));
|
|
|
|
|
+ mouse_device = Common::Input::CreateInputDevice(mouse_button_params);
|
|
|
key_index++;
|
|
key_index++;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- mouse_stick_device =
|
|
|
|
|
- Common::Input::CreateInputDeviceFromString("engine:mouse,axis_x:0,axis_y:1");
|
|
|
|
|
|
|
+ Common::ParamPackage mouse_position_params = mouse_params;
|
|
|
|
|
+ mouse_position_params.Set("axis_x", 0);
|
|
|
|
|
+ mouse_position_params.Set("axis_y", 1);
|
|
|
|
|
+ mouse_position_params.Set("deadzone", 0.0f);
|
|
|
|
|
+ mouse_position_params.Set("range", 1.0f);
|
|
|
|
|
+ mouse_position_params.Set("threshold", 0.0f);
|
|
|
|
|
+ mouse_stick_device = Common::Input::CreateInputDevice(mouse_position_params);
|
|
|
|
|
|
|
|
// First two axis are reserved for mouse position
|
|
// First two axis are reserved for mouse position
|
|
|
key_index = 2;
|
|
key_index = 2;
|
|
|
- for (auto& mouse_device : mouse_analog_devices) {
|
|
|
|
|
- // Mouse axis are only mapped on port 1, pad 0
|
|
|
|
|
- Common::ParamPackage mouse_params;
|
|
|
|
|
- mouse_params.Set("engine", "mouse");
|
|
|
|
|
- mouse_params.Set("axis", static_cast<int>(key_index));
|
|
|
|
|
- mouse_params.Set("port", 1);
|
|
|
|
|
- mouse_params.Set("pad", 0);
|
|
|
|
|
- mouse_device = Common::Input::CreateInputDevice(mouse_params);
|
|
|
|
|
|
|
+ for (auto& mouse_device : mouse_wheel_devices) {
|
|
|
|
|
+ Common::ParamPackage mouse_wheel_params = mouse_params;
|
|
|
|
|
+ mouse_wheel_params.Set("axis", static_cast<int>(key_index));
|
|
|
|
|
+ mouse_device = Common::Input::CreateInputDevice(mouse_wheel_params);
|
|
|
key_index++;
|
|
key_index++;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
key_index = 0;
|
|
key_index = 0;
|
|
|
for (auto& keyboard_device : keyboard_devices) {
|
|
for (auto& keyboard_device : keyboard_devices) {
|
|
|
- // Keyboard keys are only mapped on port 1, pad 0
|
|
|
|
|
- Common::ParamPackage keyboard_params;
|
|
|
|
|
- keyboard_params.Set("engine", "keyboard");
|
|
|
|
|
- keyboard_params.Set("button", static_cast<int>(key_index));
|
|
|
|
|
- keyboard_params.Set("port", 1);
|
|
|
|
|
- keyboard_params.Set("pad", 0);
|
|
|
|
|
- keyboard_device = Common::Input::CreateInputDevice(keyboard_params);
|
|
|
|
|
|
|
+ Common::ParamPackage keyboard_key_params = keyboard_params;
|
|
|
|
|
+ keyboard_key_params.Set("button", static_cast<int>(key_index));
|
|
|
|
|
+ keyboard_key_params.Set("pad", 0);
|
|
|
|
|
+ keyboard_device = Common::Input::CreateInputDevice(keyboard_key_params);
|
|
|
key_index++;
|
|
key_index++;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
key_index = 0;
|
|
key_index = 0;
|
|
|
for (auto& keyboard_device : keyboard_modifier_devices) {
|
|
for (auto& keyboard_device : keyboard_modifier_devices) {
|
|
|
- // Keyboard moddifiers are only mapped on port 1, pad 1
|
|
|
|
|
- Common::ParamPackage keyboard_params;
|
|
|
|
|
- keyboard_params.Set("engine", "keyboard");
|
|
|
|
|
- keyboard_params.Set("button", static_cast<int>(key_index));
|
|
|
|
|
- keyboard_params.Set("port", 1);
|
|
|
|
|
- keyboard_params.Set("pad", 1);
|
|
|
|
|
- keyboard_device = Common::Input::CreateInputDevice(keyboard_params);
|
|
|
|
|
|
|
+ Common::ParamPackage keyboard_moddifier_params = keyboard_params;
|
|
|
|
|
+ keyboard_moddifier_params.Set("button", static_cast<int>(key_index));
|
|
|
|
|
+ keyboard_moddifier_params.Set("pad", 1);
|
|
|
|
|
+ keyboard_device = Common::Input::CreateInputDevice(keyboard_moddifier_params);
|
|
|
key_index++;
|
|
key_index++;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -80,14 +81,14 @@ void EmulatedDevices::ReloadInput() {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- for (std::size_t index = 0; index < mouse_analog_devices.size(); ++index) {
|
|
|
|
|
- if (!mouse_analog_devices[index]) {
|
|
|
|
|
|
|
+ for (std::size_t index = 0; index < mouse_wheel_devices.size(); ++index) {
|
|
|
|
|
+ if (!mouse_wheel_devices[index]) {
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
- mouse_analog_devices[index]->SetCallback({
|
|
|
|
|
|
|
+ mouse_wheel_devices[index]->SetCallback({
|
|
|
.on_change =
|
|
.on_change =
|
|
|
[this, index](const Common::Input::CallbackStatus& callback) {
|
|
[this, index](const Common::Input::CallbackStatus& callback) {
|
|
|
- SetMouseAnalog(callback, index);
|
|
|
|
|
|
|
+ SetMouseWheel(callback, index);
|
|
|
},
|
|
},
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
@@ -95,7 +96,9 @@ void EmulatedDevices::ReloadInput() {
|
|
|
if (mouse_stick_device) {
|
|
if (mouse_stick_device) {
|
|
|
mouse_stick_device->SetCallback({
|
|
mouse_stick_device->SetCallback({
|
|
|
.on_change =
|
|
.on_change =
|
|
|
- [this](const Common::Input::CallbackStatus& callback) { SetMouseStick(callback); },
|
|
|
|
|
|
|
+ [this](const Common::Input::CallbackStatus& callback) {
|
|
|
|
|
+ SetMousePosition(callback);
|
|
|
|
|
+ },
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -128,7 +131,7 @@ void EmulatedDevices::UnloadInput() {
|
|
|
for (auto& button : mouse_button_devices) {
|
|
for (auto& button : mouse_button_devices) {
|
|
|
button.reset();
|
|
button.reset();
|
|
|
}
|
|
}
|
|
|
- for (auto& analog : mouse_analog_devices) {
|
|
|
|
|
|
|
+ for (auto& analog : mouse_wheel_devices) {
|
|
|
analog.reset();
|
|
analog.reset();
|
|
|
}
|
|
}
|
|
|
mouse_stick_device.reset();
|
|
mouse_stick_device.reset();
|
|
@@ -362,18 +365,18 @@ void EmulatedDevices::SetMouseButton(const Common::Input::CallbackStatus& callba
|
|
|
TriggerOnChange(DeviceTriggerType::Mouse);
|
|
TriggerOnChange(DeviceTriggerType::Mouse);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void EmulatedDevices::SetMouseAnalog(const Common::Input::CallbackStatus& callback,
|
|
|
|
|
- std::size_t index) {
|
|
|
|
|
- if (index >= device_status.mouse_analog_values.size()) {
|
|
|
|
|
|
|
+void EmulatedDevices::SetMouseWheel(const Common::Input::CallbackStatus& callback,
|
|
|
|
|
+ std::size_t index) {
|
|
|
|
|
+ if (index >= device_status.mouse_wheel_values.size()) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
std::unique_lock lock{mutex};
|
|
std::unique_lock lock{mutex};
|
|
|
const auto analog_value = TransformToAnalog(callback);
|
|
const auto analog_value = TransformToAnalog(callback);
|
|
|
|
|
|
|
|
- device_status.mouse_analog_values[index] = analog_value;
|
|
|
|
|
|
|
+ device_status.mouse_wheel_values[index] = analog_value;
|
|
|
|
|
|
|
|
if (is_configuring) {
|
|
if (is_configuring) {
|
|
|
- device_status.mouse_position_state = {};
|
|
|
|
|
|
|
+ device_status.mouse_wheel_state = {};
|
|
|
lock.unlock();
|
|
lock.unlock();
|
|
|
TriggerOnChange(DeviceTriggerType::Mouse);
|
|
TriggerOnChange(DeviceTriggerType::Mouse);
|
|
|
return;
|
|
return;
|
|
@@ -392,7 +395,7 @@ void EmulatedDevices::SetMouseAnalog(const Common::Input::CallbackStatus& callba
|
|
|
TriggerOnChange(DeviceTriggerType::Mouse);
|
|
TriggerOnChange(DeviceTriggerType::Mouse);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void EmulatedDevices::SetMouseStick(const Common::Input::CallbackStatus& callback) {
|
|
|
|
|
|
|
+void EmulatedDevices::SetMousePosition(const Common::Input::CallbackStatus& callback) {
|
|
|
std::unique_lock lock{mutex};
|
|
std::unique_lock lock{mutex};
|
|
|
const auto touch_value = TransformToTouch(callback);
|
|
const auto touch_value = TransformToTouch(callback);
|
|
|
|
|
|