Sono riuscito a farlo
echo -n " command "> / dev / tty1
Vengono visualizzate le lettere e il cursore si sposta, ma sono "fantasmi" - se colpisci Enter, non succede nulla (non sono nello stdin).
Modificare:
Nel mezzo dello screenshot qui sotto, vedi perché vedo l'uso di questo. (La riga con una didascalia rossa, proprio sotto la riga con una didascalia gialla.) Così com'è ora, non stai davvero "modificando" il testo della nota; ti viene semplicemente chiesto di scrivere un nuovo testo, che sostituirà il testo della nota che stai (non realmente) modificando. Quindi, ho pensato che potesse essere risolto semplicemente incollando il vecchio testo in tty: se l'utente preme invio, non viene apportata alcuna modifica. (Questo programma è in Perl / MySQL, ma ho pensato che sarebbe stato più interessante chiedere una soluzione generale rispetto a "come posso farlo in Perl".)
Modifica 2:
Ecco il codice Perl, che utilizza il codice C di seguito (funziona esattamente come previsto), così come un nuovo screenshot - speriamo che questo chiarisca le cose oltre ogni dubbio :) Ancora una volta, guarda al centro dello screenshot, dove viene effettuata la modifica al testo della nota: questa volta è presente il vecchio testo, ad esempio se si desidera correggere un errore di battitura, non è necessario digitare nuovamente l'intero testo della nota.
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);