keyboard.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <array>
  6. #include "common/common_funcs.h"
  7. #include "common/common_types.h"
  8. #include "common/swap.h"
  9. #include "core/hle/service/hid/controllers/controller_base.h"
  10. namespace Service::HID {
  11. class Controller_Keyboard final : public ControllerBase {
  12. public:
  13. Controller_Keyboard() = default;
  14. // Called when the controller is initialized
  15. void OnInit() override;
  16. // When the controller is released
  17. void OnRelease() override;
  18. // When the controller is requesting an update for the shared memory
  19. void OnUpdate(u8* data, size_t size) override;
  20. // Called when input devices should be loaded
  21. void OnLoadInputDevices() override;
  22. private:
  23. struct KeyboardState {
  24. s64_le sampling_number;
  25. s64_le sampling_number2;
  26. s32_le modifier;
  27. s32_le attribute;
  28. std::array<u8, 32> key{};
  29. };
  30. static_assert(sizeof(KeyboardState) == 0x38, "KeyboardState is an invalid size");
  31. struct SharedMemory {
  32. CommonHeader header;
  33. std::array<KeyboardState, 17> pad_states;
  34. INSERT_PADDING_BYTES(0x28);
  35. };
  36. static_assert(sizeof(SharedMemory) == 0x400, "SharedMemory is an invalid size");
  37. SharedMemory shared_memory{};
  38. };
  39. }; // namespace Service::HID