diff options
| author | 2021-11-13 02:39:01 -0600 | |
|---|---|---|
| committer | 2021-11-24 20:30:28 -0600 | |
| commit | 7fcfe24a3edff903871bee6c249d97e64648ddfa (patch) | |
| tree | dda21fd06ae069c800e5aa69b57ed489dc309b70 /src | |
| parent | core/hid: Remove usage of native types, fix a couple of errors with motion (diff) | |
| download | yuzu-7fcfe24a3edff903871bee6c249d97e64648ddfa.tar.gz yuzu-7fcfe24a3edff903871bee6c249d97e64648ddfa.tar.xz yuzu-7fcfe24a3edff903871bee6c249d97e64648ddfa.zip | |
core/hid: Fix keyboard alignment
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hid/hid_types.h | 25 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/keyboard.cpp | 1 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/core/hid/hid_types.h b/src/core/hid/hid_types.h index f224cb744..41bc65ce2 100644 --- a/src/core/hid/hid_types.h +++ b/src/core/hid/hid_types.h | |||
| @@ -423,20 +423,21 @@ static_assert(sizeof(VibrationDeviceInfo) == 0x8, "VibrationDeviceInfo has incor | |||
| 423 | // This is nn::hid::KeyboardModifier | 423 | // This is nn::hid::KeyboardModifier |
| 424 | struct KeyboardModifier { | 424 | struct KeyboardModifier { |
| 425 | union { | 425 | union { |
| 426 | u32 raw{}; | 426 | u64 raw{}; |
| 427 | BitField<0, 1, u32> control; | 427 | BitField<0, 1, u64> control; |
| 428 | BitField<1, 1, u32> shift; | 428 | BitField<1, 1, u64> shift; |
| 429 | BitField<2, 1, u32> left_alt; | 429 | BitField<2, 1, u64> left_alt; |
| 430 | BitField<3, 1, u32> right_alt; | 430 | BitField<3, 1, u64> right_alt; |
| 431 | BitField<4, 1, u32> gui; | 431 | BitField<4, 1, u64> gui; |
| 432 | BitField<8, 1, u32> caps_lock; | 432 | BitField<8, 1, u64> caps_lock; |
| 433 | BitField<9, 1, u32> scroll_lock; | 433 | BitField<9, 1, u64> scroll_lock; |
| 434 | BitField<10, 1, u32> num_lock; | 434 | BitField<10, 1, u64> num_lock; |
| 435 | BitField<11, 1, u32> katakana; | 435 | BitField<11, 1, u64> katakana; |
| 436 | BitField<12, 1, u32> hiragana; | 436 | BitField<12, 1, u64> hiragana; |
| 437 | BitField<32, 1, u64> unknown; | ||
| 437 | }; | 438 | }; |
| 438 | }; | 439 | }; |
| 439 | static_assert(sizeof(KeyboardModifier) == 0x4, "KeyboardModifier is an invalid size"); | 440 | static_assert(sizeof(KeyboardModifier) == 0x8, "KeyboardModifier is an invalid size"); |
| 440 | 441 | ||
| 441 | // This is nn::hid::KeyboardKey | 442 | // This is nn::hid::KeyboardKey |
| 442 | struct KeyboardKey { | 443 | struct KeyboardKey { |
diff --git a/src/core/hle/service/hid/controllers/keyboard.cpp b/src/core/hle/service/hid/controllers/keyboard.cpp index 1dc219bf5..d6505dbc5 100644 --- a/src/core/hle/service/hid/controllers/keyboard.cpp +++ b/src/core/hle/service/hid/controllers/keyboard.cpp | |||
| @@ -42,6 +42,7 @@ void Controller_Keyboard::OnUpdate(const Core::Timing::CoreTiming& core_timing, | |||
| 42 | 42 | ||
| 43 | next_state.key = keyboard_state; | 43 | next_state.key = keyboard_state; |
| 44 | next_state.modifier = keyboard_modifier_state; | 44 | next_state.modifier = keyboard_modifier_state; |
| 45 | next_state.modifier.unknown.Assign(1); | ||
| 45 | } | 46 | } |
| 46 | 47 | ||
| 47 | keyboard_lifo.WriteNextEntry(next_state); | 48 | keyboard_lifo.WriteNextEntry(next_state); |