From b89cc816744d9467337070ef21a541c62795ef52 Mon Sep 17 00:00:00 2001 From: Liav A Date: Fri, 14 Apr 2023 18:53:06 +0300 Subject: [PATCH] Kernel/HID: Expose character map index in the KeyEvent structure This will be used later on by WindowServer so it will not use the scancode, which will represent the actual character index in the keyboard mapping when using scan code set 2. --- Kernel/API/KeyCode.h | 1 + Kernel/Devices/HID/KeyboardDevice.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/Kernel/API/KeyCode.h b/Kernel/API/KeyCode.h index 0fd33a62b1..eab009d07d 100644 --- a/Kernel/API/KeyCode.h +++ b/Kernel/API/KeyCode.h @@ -142,6 +142,7 @@ enum KeyModifier { struct KeyEvent { KeyCode key { Key_Invalid }; + u8 map_entry_index { 0 }; u32 scancode { 0 }; u32 code_point { 0 }; u8 flags { 0 }; diff --git a/Kernel/Devices/HID/KeyboardDevice.cpp b/Kernel/Devices/HID/KeyboardDevice.cpp index 9c893ac9a6..8fb25f0a40 100644 --- a/Kernel/Devices/HID/KeyboardDevice.cpp +++ b/Kernel/Devices/HID/KeyboardDevice.cpp @@ -299,6 +299,7 @@ void KeyboardDevice::handle_scan_code_input_event(ScanCodeEvent event) Event queued_event; queued_event.key = key; + queued_event.map_entry_index = event.scan_code_value & 0xFF; queued_event.scancode = event.e0_prefix ? 0xe000 + event.scan_code_value : event.scan_code_value; queued_event.flags = m_modifiers; queued_event.e0_prefix = event.e0_prefix;