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 71fc05807..9f68a41cc 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 c0994ab4d..bee16a8ed 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 4eca68533..778b328b9 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{}; | 
