Bladeren bron

LibVT: Mask out keypad keys while in keypad application mode

hanaa12G 1 jaar geleden
bovenliggende
commit
dea61d95db
2 gewijzigde bestanden met toevoegingen van 8 en 2 verwijderingen
  1. 7 2
      Userland/Libraries/LibVT/Terminal.cpp
  2. 1 0
      Userland/Libraries/LibVT/Terminal.h

+ 7 - 2
Userland/Libraries/LibVT/Terminal.cpp

@@ -943,12 +943,12 @@ void Terminal::DECDC(Parameters params)
 
 void Terminal::DECKPNM()
 {
-    dbgln("FIXME: implement setting the keypad to numeric mode");
+    m_in_application_keypad_mode = false;
 }
 
 void Terminal::DECKPAM()
 {
-    dbgln("FIXME: implement setting the keypad to application mode");
+    m_in_application_keypad_mode = true;
 }
 
 void Terminal::DSR(Parameters params)
@@ -1327,6 +1327,7 @@ void Terminal::handle_key_press(KeyCode key, u32 code_point, u8 flags)
     bool ctrl = flags & Mod_Ctrl;
     bool alt = flags & Mod_Alt;
     bool shift = flags & Mod_Shift;
+    bool keypad = flags & Mod_Keypad;
     unsigned modifier_mask = int(shift) + (int(alt) << 1) + (int(ctrl) << 2);
 
     auto emit_final_with_modifier = [this, modifier_mask](char final) {
@@ -1347,6 +1348,10 @@ void Terminal::handle_key_press(KeyCode key, u32 code_point, u8 flags)
         emit_string(builder.string_view());
     };
 
+    if (keypad && m_in_application_keypad_mode) {
+        return;
+    }
+
     switch (key) {
     case KeyCode::Key_Up:
         emit_final_with_modifier('A');

+ 1 - 0
Userland/Libraries/LibVT/Terminal.h

@@ -424,6 +424,7 @@ protected:
 
     bool m_swallow_current { false };
     bool m_stomp { false };
+    bool m_in_application_keypad_mode { false };
 
     CursorShape m_cursor_shape { VT::CursorShape::Block };
     CursorShape m_saved_cursor_shape { VT::CursorShape::Block };