文字列を tty に入れてコマンドを設定します。

文字列を tty に入れてコマンドを設定します。

私はこれができました

エコ-n"注文する> /dev/tty1

文字が現れ、カーソルが移動しますが、「ゴースト」です。をクリックするとEnter何も起こりません(標準入力ではありません)。

編集する:

下のスクリーンショットの途中で、私がその用途を見た理由がわかります。 (赤いヘッダーがある行は黄色のヘッダーがある行のすぐ下にあります。)これで、実際にコメントテキストを「編集」することはできません。 (実際ではない)編集中のコメントテキストを置き換える新しいテキストを作成するように求められます。だから私は以前のテキストをttyに貼り付けるだけでこの問題を解決できると思いました。ユーザーがEnterキーを押すと変更は行われません。 (このプログラムはPerl / MySQLで書かれていますが、「Perlでどうすればいいですか?」よりも一般的な解決策を求める方が興味深いと思います。)

はい

編集2:

以下は、以下のCコード(予想どおりに正しく機能します)を使用するPerlコードと新しいスクリーンショットです。これで状況が明確になりますように。 text - thisもう一度言うが、前のテキストがあるので、例えば、スペルエラーだけを修正したい場合は、完全なノートテキストを再入力する必要はありません。

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);

より良い例

ベストアンサー1

端末は、入力デバイス(キーボードなど)とディスプレイデバイス(モニタなど)の2つの役割を果たします。端末から読むと、入力デバイスから出てくる内容が得られます。端末に書き込むと、データが表示装置に表示されます。

端末に強制的に入力する普遍的な方法はありません。これはほとんど必要ありません。端末が必要なプログラムと対話する必要がある場合は、専用の端末エミュレータを使用してください。予想されるまたはまたは、次のプログラマブル端末ラッパー画面またはマルチプレクサ。 Linuxコンソールに強制的に入力できます。ioctlを使う。ターミナルエミュレータを使用してX11入力を強制できます。xdoツールまたはマクロ

おすすめ記事