diff options
author | german77 <juangerman-13@hotmail.com> | 2021-12-25 19:00:11 -0600 |
---|---|---|
committer | german77 <juangerman-13@hotmail.com> | 2022-01-06 21:11:27 -0600 |
commit | b94e947793dcb53e9e00ef8bf587b2f689d38d41 (patch) | |
tree | f711fb7056365911b83dd859ddb5a2971af1924c | |
parent | 7116a7d28bb7f0b4ecdf937d20635382e91f4b93 (diff) |
core/hid: Add home and screenshot button support
-rw-r--r-- | src/core/hid/emulated_controller.cpp | 17 | ||||
-rw-r--r-- | src/core/hid/emulated_controller.h | 10 | ||||
-rw-r--r-- | src/core/hid/hid_types.h | 20 |
3 files changed, 46 insertions, 1 deletions
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index 71fc058074..9f68a41ccc 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp @@ -596,7 +596,10 @@ void EmulatedController::SetButton(const Common::Input::CallbackStatus& callback controller.npad_button_state.right_sr.Assign(current_status.value); break; case Settings::NativeButton::Home: + controller.home_button_state.home.Assign(current_status.value); + break; case Settings::NativeButton::Screenshot: + controller.capture_button_state.capture.Assign(current_status.value); break; } } @@ -1077,6 +1080,20 @@ BatteryValues EmulatedController::GetBatteryValues() const { return controller.battery_values; } +HomeButtonState EmulatedController::GetHomeButtons() const { + if (is_configuring) { + return {}; + } + return controller.home_button_state; +} + +CaptureButtonState EmulatedController::GetCaptureButtons() const { + if (is_configuring) { + return {}; + } + return controller.capture_button_state; +} + NpadButtonState EmulatedController::GetNpadButtons() const { if (is_configuring) { return {}; diff --git a/src/core/hid/emulated_controller.h b/src/core/hid/emulated_controller.h index c0994ab4d0..bee16a8ed4 100644 --- a/src/core/hid/emulated_controller.h +++ b/src/core/hid/emulated_controller.h @@ -101,6 +101,8 @@ struct ControllerStatus { VibrationValues vibration_values{}; // Data for HID serices + HomeButtonState home_button_state{}; + CaptureButtonState capture_button_state{}; NpadButtonState npad_button_state{}; DebugPadButton debug_pad_button_state{}; AnalogSticks analog_stick_state{}; @@ -261,7 +263,13 @@ public: /// Returns the latest battery status from the controller with parameters BatteryValues GetBatteryValues() const; - /// Returns the latest status of button input for the npad service + /// Returns the latest status of button input for the hid::HomeButton service + HomeButtonState GetHomeButtons() const; + + /// Returns the latest status of button input for the hid::CaptureButton service + CaptureButtonState GetCaptureButtons() const; + + /// Returns the latest status of button input for the hid::Npad service NpadButtonState GetNpadButtons() const; /// Returns the latest status of button input for the debug pad service diff --git a/src/core/hid/hid_types.h b/src/core/hid/hid_types.h index 4eca685336..778b328b9e 100644 --- a/src/core/hid/hid_types.h +++ b/src/core/hid/hid_types.h @@ -378,6 +378,26 @@ struct LedPattern { }; }; +struct HomeButtonState { + union { + u64 raw{}; + + // Buttons + BitField<0, 1, u64> home; + }; +}; +static_assert(sizeof(HomeButtonState) == 0x8, "HomeButtonState has incorrect size."); + +struct CaptureButtonState { + union { + u64 raw{}; + + // Buttons + BitField<0, 1, u64> capture; + }; +}; +static_assert(sizeof(CaptureButtonState) == 0x8, "CaptureButtonState has incorrect size."); + struct NpadButtonState { union { NpadButton raw{}; |