summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hid/hid_types.h25
-rw-r--r--src/core/hle/service/hid/controllers/keyboard.cpp1
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
424struct KeyboardModifier { 424struct 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};
439static_assert(sizeof(KeyboardModifier) == 0x4, "KeyboardModifier is an invalid size"); 440static_assert(sizeof(KeyboardModifier) == 0x8, "KeyboardModifier is an invalid size");
440 441
441// This is nn::hid::KeyboardKey 442// This is nn::hid::KeyboardKey
442struct KeyboardKey { 443struct 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);