diff options
author | german77 <juangerman-13@hotmail.com> | 2021-10-24 18:22:20 +0200 |
---|---|---|
committer | Narr the Reg <juangerman-13@hotmail.com> | 2021-11-25 03:30:25 +0100 |
commit | 464c4d26ac8e7af6302390684445b357e5cda4e4 (patch) | |
tree | 160f98a8bce324756f46b7b5aee889bb5b53f8af /src/core/hid/emulated_devices.cpp | |
parent | web_applet: Replace HIDButton with NpadButton (diff) | |
download | yuzu-464c4d26ac8e7af6302390684445b357e5cda4e4.tar yuzu-464c4d26ac8e7af6302390684445b357e5cda4e4.tar.gz yuzu-464c4d26ac8e7af6302390684445b357e5cda4e4.tar.bz2 yuzu-464c4d26ac8e7af6302390684445b357e5cda4e4.tar.lz yuzu-464c4d26ac8e7af6302390684445b357e5cda4e4.tar.xz yuzu-464c4d26ac8e7af6302390684445b357e5cda4e4.tar.zst yuzu-464c4d26ac8e7af6302390684445b357e5cda4e4.zip |
Diffstat (limited to 'src/core/hid/emulated_devices.cpp')
-rw-r--r-- | src/core/hid/emulated_devices.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/core/hid/emulated_devices.cpp b/src/core/hid/emulated_devices.cpp index 1c4065cd8..5afd83f62 100644 --- a/src/core/hid/emulated_devices.cpp +++ b/src/core/hid/emulated_devices.cpp @@ -162,17 +162,22 @@ void EmulatedDevices::SetKeyboardButton(Input::CallbackStatus callback, std::siz return; } - // TODO(german77): Do this properly - // switch (index) { - // case Settings::NativeKeyboard::A: - // interface_status.keyboard_state.a.Assign(current_status.value); - // break; - // .... - // } + UpdateKey(index, current_status.value); TriggerOnChange(DeviceTriggerType::Keyboard); } +void EmulatedDevices::UpdateKey(std::size_t key_index, bool status) { + constexpr u8 KEYS_PER_BYTE = 8; + auto& entry = device_status.keyboard_state.key[key_index / KEYS_PER_BYTE]; + const u8 mask = 1 << (key_index % KEYS_PER_BYTE); + if (status) { + entry = entry | mask; + } else { + entry = entry & ~mask; + } +} + void EmulatedDevices::SetKeyboardModifier(Input::CallbackStatus callback, std::size_t index) { if (index >= device_status.keyboard_moddifier_values.size()) { return; |