Udało mi się to zrobić
echo -n " polecenie "> / dev / tty1
Pojawiają się litery i kursor się porusza, ale są one „duchami” - jeśli trafisz Enter, nic się nie wydarzy (nie są ustawione na standardowe).
Edytować:
Pośrodku poniższego zrzutu ekranu widać, dlaczego widzę zastosowanie tego. (Linia z czerwonym podpisem, tuż pod linią z żółtym podpisem.) W tej chwili tak naprawdę nie „edytujesz” tekstu notatki; zostałeś poproszony o napisanie nowego tekstu, który zastąpi tekst notatki, którą (tak naprawdę) nie edytujesz. Pomyślałem więc, że można temu zaradzić, po prostu wklejając stary tekst do tty: jeśli użytkownik naciśnie klawisz Enter, nie zostaną wprowadzone żadne zmiany. (Ten program jest w Perlu / MySQL, ale pomyślałem, że bardziej interesujące byłoby poprosić o ogólne rozwiązanie niż „jak to zrobić w Perlu”).
Edycja 2:
Oto kod Perla, który używa poniższego kodu C (działa dokładnie zgodnie z przeznaczeniem), a także nowy zrzut ekranu - mam nadzieję, że wyjaśni to ponad wszelką wątpliwość :) Ponownie spójrz na środek zrzutu ekranu, w którym dokonano edycji do tekstu notatki - tym razem znajduje się stary tekst, na przykład jeśli chcesz tylko poprawić literówkę, nie będziesz musiał ponownie wpisywać całego tekstu notatki.
my $edit_note_text = $edit_note_data[2];
print BOLD, RED, " new text: ", RESET;
system("writevt /dev/tty \"$edit_note_text\"");
my $new_text = <$in>;
$new_text = fix_input($new_text);
my $set_text = "UPDATE notes SET note = \"$new_text\" WHERE id = $edit_note_id";
$db->do($set_text);