MCPcopy Create free account
hub / github.com/LagPixelLOL/ChatGPTCLIBot / read_key0

Method read_key0

main/interface/cpp-terminal/input.cpp:49–181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47}
48
49int32_t Term::read_key0() {
50 char c{};
51 if (!Platform::read_raw(&c)) {
52 return NO_KEY;
53 }
54 if (is_CTRL(static_cast<Term::Key>(c))) {
55 return c;
56 } else if (c == ESC) {
57 char seq[4]{'\0', '\0', '\0', '\0'};
58 if (!Platform::read_raw(&seq[0])) {
59 return ESC;
60 }
61 if (!Platform::read_raw(&seq[1])) {
62 if (seq[0] >= 'a' && seq[0] <= 'z') {
63 // gnome-term, Windows Console
64 return ALT + seq[0];
65 }
66 if (seq[0] == '\x0d') {
67 // gnome-term
68 return ALT_ENTER;
69 }
70 return -1;
71 }
72 if (seq[0] == '[') {
73 if (seq[1] >= '0' && seq[1] <= '9') {
74 if (!Platform::read_raw(&seq[2])) {
75 return -2;
76 }
77 if (seq[2] == '~') {
78 switch (seq[1]) {
79 case '1': return HOME;
80 case '2': return INSERT;
81 case '3': return DEL;
82 case '4': return END;
83 case '5': return PAGE_UP;
84 case '6': return PAGE_DOWN;
85 case '7': return HOME;
86 case '8': return END;
87 }
88 } else if (seq[2] == ';') {
89 if (seq[1] == '1') {
90 if (!Platform::read_raw(&seq[2])) {
91 return -10;
92 }
93 if (!Platform::read_raw(&seq[3])) {
94 return -11;
95 }
96 if (seq[2] == '5') {
97 switch (seq[3]) {
98 case 'A': return CTRL_UP;
99 case 'B': return CTRL_DOWN;
100 case 'C': return CTRL_RIGHT;
101 case 'D': return CTRL_LEFT;
102 }
103 }
104 return -12;
105 }
106 } else {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected