From fea498e9ac051497ce3b184a6ce0b734c60a2801 Mon Sep 17 00:00:00 2001 From: Gal Horowitz Date: Tue, 29 Dec 2020 17:26:04 +0200 Subject: [PATCH] LibKeyboard: get_char now handles e0 prefix for control keys Control keys which have numpad counter-parts have the same scancode except for an e0 prefix. We now return a 0 code_point for those keys. --- Libraries/LibKeyboard/CharacterMap.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Libraries/LibKeyboard/CharacterMap.cpp b/Libraries/LibKeyboard/CharacterMap.cpp index b5e0f4ee25..9cd22eb053 100644 --- a/Libraries/LibKeyboard/CharacterMap.cpp +++ b/Libraries/LibKeyboard/CharacterMap.cpp @@ -82,6 +82,10 @@ u32 CharacterMap::get_char(KeyEvent event) if (event.e0_prefix && event.key == Key_Slash) { // If Key_Slash (scancode = 0x35) mapped to other form "/", we fix num pad key of "/" with this case. code_point = '/'; + } else if (event.e0_prefix) { + // Except for `keypad-/`, all e0 scan codes are not actually characters. i.e., `keypad-0` and + // `Insert` have the same scancode except for the prefix, but insert should not have a code_point. + code_point = 0; } return code_point;