diff options
Diffstat (limited to 'Kernel/Devices/HID/PS2KeyboardDevice.cpp')
-rw-r--r-- | Kernel/Devices/HID/PS2KeyboardDevice.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Kernel/Devices/HID/PS2KeyboardDevice.cpp b/Kernel/Devices/HID/PS2KeyboardDevice.cpp index 9dfe2a772d..8ff6d5b3b0 100644 --- a/Kernel/Devices/HID/PS2KeyboardDevice.cpp +++ b/Kernel/Devices/HID/PS2KeyboardDevice.cpp @@ -54,7 +54,12 @@ void PS2KeyboardDevice::irq_handle_byte_read(u8 byte) break; case 0x2a: case 0x36: - update_modifier(Mod_Shift, pressed); + if (m_both_shift_keys_pressed) + m_both_shift_keys_pressed = false; + else if ((m_modifiers & Mod_Shift) != 0 && pressed) + m_both_shift_keys_pressed = true; + else + update_modifier(Mod_Shift, pressed); break; } switch (ch) { |