summaryrefslogtreecommitdiffstats
path: root/src/core/hid
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2021-11-15 04:28:38 +0100
committerNarr the Reg <juangerman-13@hotmail.com>2021-11-25 03:30:28 +0100
commitf4e5f89e6fb9d68cd4ba7d98c281584c50f0e149 (patch)
tree9e9f9114d9b7528e74e78102279411595632f048 /src/core/hid
parentcore/hid: Fully implement native mouse (diff)
downloadyuzu-f4e5f89e6fb9d68cd4ba7d98c281584c50f0e149.tar
yuzu-f4e5f89e6fb9d68cd4ba7d98c281584c50f0e149.tar.gz
yuzu-f4e5f89e6fb9d68cd4ba7d98c281584c50f0e149.tar.bz2
yuzu-f4e5f89e6fb9d68cd4ba7d98c281584c50f0e149.tar.lz
yuzu-f4e5f89e6fb9d68cd4ba7d98c281584c50f0e149.tar.xz
yuzu-f4e5f89e6fb9d68cd4ba7d98c281584c50f0e149.tar.zst
yuzu-f4e5f89e6fb9d68cd4ba7d98c281584c50f0e149.zip
Diffstat (limited to 'src/core/hid')
-rw-r--r--src/core/hid/emulated_devices.cpp10
-rw-r--r--src/core/hid/emulated_devices.h4
-rw-r--r--src/core/hid/hid_types.h35
-rw-r--r--src/core/hid/input_converter.cpp4
4 files changed, 33 insertions, 20 deletions
diff --git a/src/core/hid/emulated_devices.cpp b/src/core/hid/emulated_devices.cpp
index 70a494097..874780ec2 100644
--- a/src/core/hid/emulated_devices.cpp
+++ b/src/core/hid/emulated_devices.cpp
@@ -376,9 +376,9 @@ void EmulatedDevices::SetMouseAnalog(Common::Input::CallbackStatus callback, std
void EmulatedDevices::SetMouseStick(Common::Input::CallbackStatus callback) {
std::lock_guard lock{mutex};
- const auto stick_value = TransformToStick(callback);
+ const auto touch_value = TransformToTouch(callback);
- device_status.mouse_stick_value = stick_value;
+ device_status.mouse_stick_value = touch_value;
if (is_configuring) {
device_status.mouse_position_state = {};
@@ -386,8 +386,8 @@ void EmulatedDevices::SetMouseStick(Common::Input::CallbackStatus callback) {
return;
}
- device_status.mouse_position_state.x = stick_value.x.value;
- device_status.mouse_position_state.y = stick_value.y.value;
+ device_status.mouse_position_state.x = touch_value.x.value;
+ device_status.mouse_position_state.y = touch_value.y.value;
TriggerOnChange(DeviceTriggerType::Mouse);
}
@@ -420,7 +420,7 @@ MousePosition EmulatedDevices::GetMousePosition() const {
return device_status.mouse_position_state;
}
-AnalogStickState EmulatedDevices::GetMouseDeltaWheel() const {
+AnalogStickState EmulatedDevices::GetMouseWheel() const {
return device_status.mouse_wheel_state;
}
diff --git a/src/core/hid/emulated_devices.h b/src/core/hid/emulated_devices.h
index 49edfd255..05a945d08 100644
--- a/src/core/hid/emulated_devices.h
+++ b/src/core/hid/emulated_devices.h
@@ -38,7 +38,7 @@ using MouseButtonValues =
std::array<Common::Input::ButtonStatus, Settings::NativeMouseButton::NumMouseButtons>;
using MouseAnalogValues =
std::array<Common::Input::AnalogStatus, Settings::NativeMouseWheel::NumMouseWheels>;
-using MouseStickValue = Common::Input::StickStatus;
+using MouseStickValue = Common::Input::TouchStatus;
struct MousePosition {
f32 x;
@@ -130,7 +130,7 @@ public:
MousePosition GetMousePosition() const;
/// Returns the latest mouse wheel change
- AnalogStickState GetMouseDeltaWheel() const;
+ AnalogStickState GetMouseWheel() const;
/**
* Adds a callback to the list of events
diff --git a/src/core/hid/hid_types.h b/src/core/hid/hid_types.h
index af95f3aff..8b12f63ad 100644
--- a/src/core/hid/hid_types.h
+++ b/src/core/hid/hid_types.h
@@ -502,21 +502,30 @@ static_assert(sizeof(VibrationDeviceInfo) == 0x8, "VibrationDeviceInfo has incor
// This is nn::hid::KeyboardModifier
struct KeyboardModifier {
union {
- u64 raw{};
- BitField<0, 1, u64> control;
- BitField<1, 1, u64> shift;
- BitField<2, 1, u64> left_alt;
- BitField<3, 1, u64> right_alt;
- BitField<4, 1, u64> gui;
- BitField<8, 1, u64> caps_lock;
- BitField<9, 1, u64> scroll_lock;
- BitField<10, 1, u64> num_lock;
- BitField<11, 1, u64> katakana;
- BitField<12, 1, u64> hiragana;
- BitField<32, 1, u64> unknown;
+ u32 raw{};
+ BitField<0, 1, u32> control;
+ BitField<1, 1, u32> shift;
+ BitField<2, 1, u32> left_alt;
+ BitField<3, 1, u32> right_alt;
+ BitField<4, 1, u32> gui;
+ BitField<8, 1, u32> caps_lock;
+ BitField<9, 1, u32> scroll_lock;
+ BitField<10, 1, u32> num_lock;
+ BitField<11, 1, u32> katakana;
+ BitField<12, 1, u32> hiragana;
+ };
+};
+
+static_assert(sizeof(KeyboardModifier) == 0x4, "KeyboardModifier is an invalid size");
+
+// This is nn::hid::KeyboardAttribute
+struct KeyboardAttribute {
+ union {
+ u32 raw{};
+ BitField<0, 1, u32> is_connected;
};
};
-static_assert(sizeof(KeyboardModifier) == 0x8, "KeyboardModifier is an invalid size");
+static_assert(sizeof(KeyboardAttribute) == 0x4, "KeyboardAttribute is an invalid size");
// This is nn::hid::KeyboardKey
struct KeyboardKey {
diff --git a/src/core/hid/input_converter.cpp b/src/core/hid/input_converter.cpp
index c4e653956..f5acff6e0 100644
--- a/src/core/hid/input_converter.cpp
+++ b/src/core/hid/input_converter.cpp
@@ -175,6 +175,10 @@ Common::Input::TouchStatus TransformToTouch(const Common::Input::CallbackStatus&
case Common::Input::InputType::Touch:
status = callback.touch_status;
break;
+ case Common::Input::InputType::Stick:
+ status.x = callback.stick_status.x;
+ status.y = callback.stick_status.y;
+ break;
default:
LOG_ERROR(Input, "Conversion from type {} to touch not implemented", callback.type);
break;