Browse Source

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.
Gal Horowitz 4 năm trước cách đây
mục cha
commit
fea498e9ac
1 tập tin đã thay đổi với 4 bổ sung0 xóa
  1. 4 0
      Libraries/LibKeyboard/CharacterMap.cpp

+ 4 - 0
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;