Add support for c-Left/c-Right

This commit is contained in:
Chris 2024-10-03 18:26:36 +02:00
parent ab399f77e9
commit e70839ee30
2 changed files with 17 additions and 0 deletions

View File

@ -736,6 +736,17 @@ class Editor
if ($cursorPos < mb_strlen($value)) if ($cursorPos < mb_strlen($value))
$cursorPos++; $cursorPos++;
break; break;
case "k{CLEFT}":
while ($cursorPos > 0) {
$cursorPos--;
if (mb_substr($value, $cursorPos - 1, 1) == " ") {
break;
}
}
break;
case "k{CRIGHT}":
$cursorPos = min(mb_strlen($value), (mb_strpos($value, " ", $cursorPos) ?: mb_strlen($value)) + 1);
break;
case "k{HOME}": case "k{HOME}":
$cursorPos = 0; $cursorPos = 0;
break; break;

View File

@ -112,9 +112,15 @@ class Terminal
} elseif (strncmp($this->inputBuffer, "\e[C", 3) === 0) { } elseif (strncmp($this->inputBuffer, "\e[C", 3) === 0) {
$this->inputBuffer = mb_substr($this->inputBuffer, 3); $this->inputBuffer = mb_substr($this->inputBuffer, 3);
return "k{RIGHT}"; return "k{RIGHT}";
} elseif (strncmp($this->inputBuffer, "\e[1;5C", 6) === 0) {
$this->inputBuffer = mb_substr($this->inputBuffer, 6);
return "k{CRIGHT}";
} elseif (strncmp($this->inputBuffer, "\e[D", 3) === 0) { } elseif (strncmp($this->inputBuffer, "\e[D", 3) === 0) {
$this->inputBuffer = mb_substr($this->inputBuffer, 3); $this->inputBuffer = mb_substr($this->inputBuffer, 3);
return "k{LEFT}"; return "k{LEFT}";
} elseif (strncmp($this->inputBuffer, "\e[1;5D", 6) === 0) {
$this->inputBuffer = mb_substr($this->inputBuffer, 6);
return "k{CLEFT}";
} elseif (strncmp($this->inputBuffer, "\e[H", 3) === 0) { } elseif (strncmp($this->inputBuffer, "\e[H", 3) === 0) {
$this->inputBuffer = mb_substr($this->inputBuffer, 3); $this->inputBuffer = mb_substr($this->inputBuffer, 3);
return "k{HOME}"; return "k{HOME}";