Tcl でスクリプトを一時停止し (たとえば、「puts」を使用したいくつかの出力の後)、ユーザーがキーを押すのを待ってから、残りのテキストの出力を続行する方法を探しています。
質問する
16005 次
3 に答える
15
gets
標準入力から読み取るだけです:
proc pause {{message "Hit Enter to continue ==> "}} {
puts -nonewline $message
flush stdout
gets stdin
}
pause "Hurry, hit enter: "; # Sample usage 1
pause; # Sample usage 2, use default message
于 2013-09-25T01:07:28.163 に答える
5
あなたがUnixのようなシステムを使用している場合、Hai Vuの答えに感謝しますstty
proc anykey {{msg "Hit any key: "}} {
set stty_settings [exec stty -g]
exec stty raw -echo
puts -nonewline $msg
flush stdout
read stdin 1
exec stty $stty_settings
puts ""
}
puts 1
anykey
puts 2
Tcl wiki の詳細な議論へのリンク: Reading a single character from the keyboard using Tcl
于 2013-09-25T11:17:06.240 に答える
0
Windows の潜在的な解決策:
exec -ignorestderr [file join $env(windir) system32 cmd.exe] /c pause
これにより、ASCII 以外のキー押下 (矢印キー、エスケープなど) も検出されます。
もう 1 つの解決策は、上記のDonal Fellows によって提案された Windows の Raw モード (リンクをありがとう!) です。これは、次の 2 行のコードに要約できます。
twapi::modify_console_input_mode stdin -lineinput 0 -echoinput 0
read stdin 1
これは Escape や矢印キーなどを認識しません (後でコンソール入力モードを復元する必要があるかもしれません)。
于 2016-05-13T12:54:02.740 に答える