tcl pause&等待按键继续按下

时间:2013-09-24 22:22:28

标签: key tcl pressed

我正在寻找tcl暂停脚本的方法(例如在带有“puts”的一些输出之后)并等待用户按下一个键然后继续输出剩余的文本。

3 个答案:

答案 0 :(得分:11)

您只需使用gets从stdin中读取:

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

答案 1 :(得分:4)

感谢Hai Vu的回答,如果你使用的是stty

的unix系统
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

答案 2 :(得分:0)

Windows的潜在解决方案:

// to set to fixed value
DB::table('pivot_table_name')->where('user_id', $user->id)->update(['times_seen' => 1]); 

// to increment by one
DB::table('pivot_table_name')->where('user_id', $user->id)->increment('times_seen'); 

这也注意到非ascii按键(例如箭头键,Escape等)。

另一个解决方案是提出的Raw Mode on Windows Donal Fellows above  (感谢链接!),可以归纳为 这两行代码:

exec -ignorestderr [file join $env(windir) system32 cmd.exe] /c pause

这没有注意到Escape,箭头键等(您可能需要稍后恢复控制台输入模式)。