early-access version 2202

This commit is contained in:
pineappleEA
2021-11-15 21:44:06 +01:00
parent e7e23d3a10
commit 89013ee4f7
20 changed files with 136 additions and 108 deletions

View File

@@ -362,7 +362,6 @@ void EmulatedDevices::SetMouseAnalog(Common::Input::CallbackStatus callback, std
return;
}
LOG_ERROR(Input, "{}", analog_value.value);
switch (index) {
case Settings::NativeMouseWheel::X:
device_status.mouse_wheel_state.x = static_cast<s32>(analog_value.value);
@@ -377,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 = {};
@@ -387,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);
}
@@ -421,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;
}

View File

@@ -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

View File

@@ -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) == 0x8, "KeyboardModifier is an invalid size");
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(KeyboardAttribute) == 0x4, "KeyboardAttribute is an invalid size");
// This is nn::hid::KeyboardKey
struct KeyboardKey {
@@ -555,8 +564,9 @@ struct MouseState {
s32 y;
s32 delta_x;
s32 delta_y;
s32 delta_wheel_x;
// Axis Order in HW is switched for the wheel
s32 delta_wheel_y;
s32 delta_wheel_x;
MouseButton button;
MouseAttribute attribute;
};

View File

@@ -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;