Selaa lähdekoodia

Shell: Added support for ctr-e/a.

By pressing ctr-e/a the cursor goes to the end/beginning of the current line.
marprok 6 vuotta sitten
vanhempi
commit
ac154999f5
1 muutettua tiedostoa jossa 16 lisäystä ja 0 poistoa
  1. 16 0
      Shell/LineEditor.cpp

+ 16 - 0
Shell/LineEditor.cpp

@@ -226,6 +226,22 @@ String LineEditor::get_line(const String& prompt)
                 fflush(stdout);
                 continue;
             }
+            if (ch == 0x01) { // ^A
+                if (m_cursor > 0) {
+                    printf("\033[%dD", m_cursor);
+                    fflush(stdout);
+                    m_cursor = 0;
+                }
+                continue;
+            }
+            if (ch == 0x05) { // ^E
+                if (m_cursor < m_buffer.size()) {
+                    printf("\033[%dC", m_buffer.size() - m_cursor);
+                    fflush(stdout);
+                    m_cursor = m_buffer.size();
+                }
+                continue;
+            }
             putchar(ch);
             fflush(stdout);
             if (ch == '\n') {