diff options
author | bunnei <bunneidev@gmail.com> | 2020-05-19 15:55:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-19 15:55:14 -0400 |
commit | cf4ee279c6424ada927f74fcc34e013038af7228 (patch) | |
tree | 40589b41a0d79f166d6b47c8b5e6726a2ca1a246 /src | |
parent | 65010607b7a474e677360a5a465a3169fec41ba0 (diff) | |
parent | a79f060ea2a8dd24f399309d052db74c6456224b (diff) |
Merge pull request #3926 from ogniK5377/keyboard-states
hid: Clear keyboard states & fix logic issue
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/service/hid/controllers/keyboard.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/core/hle/service/hid/controllers/keyboard.cpp b/src/core/hle/service/hid/controllers/keyboard.cpp index 358cb9329..9a8d354ba 100644 --- a/src/core/hle/service/hid/controllers/keyboard.cpp +++ b/src/core/hle/service/hid/controllers/keyboard.cpp @@ -38,10 +38,11 @@ void Controller_Keyboard::OnUpdate(const Core::Timing::CoreTiming& core_timing, cur_entry.sampling_number = last_entry.sampling_number + 1; cur_entry.sampling_number2 = cur_entry.sampling_number; + cur_entry.key.fill(0); + cur_entry.modifier = 0; + for (std::size_t i = 0; i < keyboard_keys.size(); ++i) { - for (std::size_t k = 0; k < KEYS_PER_BYTE; ++k) { - cur_entry.key[i / KEYS_PER_BYTE] |= (keyboard_keys[i]->GetStatus() << k); - } + cur_entry.key[i / KEYS_PER_BYTE] |= (keyboard_keys[i]->GetStatus() << (i % KEYS_PER_BYTE)); } for (std::size_t i = 0; i < keyboard_mods.size(); ++i) { |