core/hid: Fix keyboard alignment

This commit is contained in:
german77 2021-11-13 02:39:01 -06:00 committed by Narr the Reg
parent 71f9b90dd9
commit 7fcfe24a3e
2 changed files with 14 additions and 12 deletions

View file

@ -423,20 +423,21 @@ static_assert(sizeof(VibrationDeviceInfo) == 0x8, "VibrationDeviceInfo has incor
// This is nn::hid::KeyboardModifier // This is nn::hid::KeyboardModifier
struct KeyboardModifier { struct KeyboardModifier {
union { union {
u32 raw{}; u64 raw{};
BitField<0, 1, u32> control; BitField<0, 1, u64> control;
BitField<1, 1, u32> shift; BitField<1, 1, u64> shift;
BitField<2, 1, u32> left_alt; BitField<2, 1, u64> left_alt;
BitField<3, 1, u32> right_alt; BitField<3, 1, u64> right_alt;
BitField<4, 1, u32> gui; BitField<4, 1, u64> gui;
BitField<8, 1, u32> caps_lock; BitField<8, 1, u64> caps_lock;
BitField<9, 1, u32> scroll_lock; BitField<9, 1, u64> scroll_lock;
BitField<10, 1, u32> num_lock; BitField<10, 1, u64> num_lock;
BitField<11, 1, u32> katakana; BitField<11, 1, u64> katakana;
BitField<12, 1, u32> hiragana; BitField<12, 1, u64> hiragana;
BitField<32, 1, u64> unknown;
}; };
}; };
static_assert(sizeof(KeyboardModifier) == 0x4, "KeyboardModifier is an invalid size"); static_assert(sizeof(KeyboardModifier) == 0x8, "KeyboardModifier is an invalid size");
// This is nn::hid::KeyboardKey // This is nn::hid::KeyboardKey
struct KeyboardKey { struct KeyboardKey {

View file

@ -42,6 +42,7 @@ void Controller_Keyboard::OnUpdate(const Core::Timing::CoreTiming& core_timing,
next_state.key = keyboard_state; next_state.key = keyboard_state;
next_state.modifier = keyboard_modifier_state; next_state.modifier = keyboard_modifier_state;
next_state.modifier.unknown.Assign(1);
} }
keyboard_lifo.WriteNextEntry(next_state); keyboard_lifo.WriteNextEntry(next_state);