Quellcode durchsuchen

LibVT: Use xterm modifier scheme for tilde keys too

Nico Weber vor 4 Jahren
Ursprung
Commit
5198eb7c1c
1 geänderte Dateien mit 10 neuen und 4 gelöschten Zeilen
  1. 10 4
      Libraries/LibVT/Terminal.cpp

+ 10 - 4
Libraries/LibVT/Terminal.cpp

@@ -1034,6 +1034,12 @@ void Terminal::handle_key_press(KeyCode key, u32 code_point, u8 flags)
         else
         else
             emit_string(String::format("\e[%c", final));
             emit_string(String::format("\e[%c", final));
     };
     };
+    auto emit_tilde_with_modifier = [this, modifier_mask](unsigned num) {
+        if (modifier_mask)
+            emit_string(String::format("\e[%d;%d~", num, modifier_mask + 1));
+        else
+            emit_string(String::format("\e[%d~", num));
+    };
 
 
     switch (key) {
     switch (key) {
     case KeyCode::Key_Up:
     case KeyCode::Key_Up:
@@ -1049,10 +1055,10 @@ void Terminal::handle_key_press(KeyCode key, u32 code_point, u8 flags)
         emit_final_with_modifier('D');
         emit_final_with_modifier('D');
         return;
         return;
     case KeyCode::Key_Insert:
     case KeyCode::Key_Insert:
-        emit_string("\033[2~");
+        emit_tilde_with_modifier(2);
         return;
         return;
     case KeyCode::Key_Delete:
     case KeyCode::Key_Delete:
-        emit_string("\033[3~");
+        emit_tilde_with_modifier(3);
         return;
         return;
     case KeyCode::Key_Home:
     case KeyCode::Key_Home:
         emit_final_with_modifier('H');
         emit_final_with_modifier('H');
@@ -1061,10 +1067,10 @@ void Terminal::handle_key_press(KeyCode key, u32 code_point, u8 flags)
         emit_final_with_modifier('F');
         emit_final_with_modifier('F');
         return;
         return;
     case KeyCode::Key_PageUp:
     case KeyCode::Key_PageUp:
-        emit_string("\033[5~");
+        emit_tilde_with_modifier(5);
         return;
         return;
     case KeyCode::Key_PageDown:
     case KeyCode::Key_PageDown:
-        emit_string("\033[6~");
+        emit_tilde_with_modifier(6);
         return;
         return;
     default:
     default:
         break;
         break;