I would like to have a function that would wait either until a specified timeout (in seconds preferably) or until a key is pressed. I've found such a function quite useful in other programming environments in setting up dialogs with users or displaying results, rather like a timed slideshow that can be speeded up by hitting a key. Searching R-seek has led to wait() in the package 'audio', but when I try, for example, joe<-wait(readline("hit a key to continue"), timeout=6) I am forced to wait the full timeout. Probably someone has done this before and I'm just not using the right search terms. Suggestions welcome. Thanks in advance. JN
On Thu, 2010-05-27 at 19:08 -0400, Prof. John C Nash wrote:> I would like to have a function that would wait either until a specified timeout (in > seconds preferably) or until a key is pressed. I've found such a function quite useful in > other programming environments in setting up dialogs with users or displaying results, > rather like a timed slideshow that can be speeded up by hitting a key. > > Searching R-seek has led to wait() in the package 'audio', but when I try, for example, > > joe<-wait(readline("hit a key to continue"), timeout=6) > > I am forced to wait the full timeout. > > Probably someone has done this before and I'm just not using the right search terms. > Suggestions welcome. > > Thanks in advance. > > JN > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.John, What operating system do you use? I don't know of an existing solution to this problem (although someone else might). However, I recently participated in a discussion on the r-devel list (cc'd) here <http://r.789695.n4.nabble.com/Serial-connections-td2017474.html>, about implementing a POSIX (Linux/Mac OSX) TTY (terminal) connection for R to interface with a serial port. However, I am certain that a tty connection for R could provide the functionality you are looking for, on POSIX systems. P.S. Maybe Simon (from the above discussion) has the right idea, that a tty connection should exploit the full POSIX terminal API, then input issues like this would have easy solutions... P.P.S The Win32 serial communications API <http://msdn.microsoft.com/en-us/library/ms810467.aspx> also provides a "wait or event" blocking mechanism. -Matt
On Thu, 2010-05-27 at 19:08 -0400, Prof. John C Nash wrote:> I would like to have a function that would wait either until a specified timeout (in > seconds preferably) or until a key is pressed. I've found such a function quite useful in > other programming environments in setting up dialogs with users or displaying results, > rather like a timed slideshow that can be speeded up by hitting a key. > > Searching R-seek has led to wait() in the package 'audio', but when I try, for example, > > joe<-wait(readline("hit a key to continue"), timeout=6) > > I am forced to wait the full timeout. > > Probably someone has done this before and I'm just not using the right search terms. > Suggestions welcome. > > Thanks in advance. > > JN > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.John, What operating system do you use? I don't know of a general solution to this problem (although someone else might). If you are using Linux you can use try this> system("read -t 1 -n 1")where -n indicates the number of characters to read and -t specifies the timeout in seconds. Hence, this command will wait until either 1 second has elapsed, or 1 character has been read from the keyboard. Also, I recently participated in a discussion on the r-devel list about implementing a POSIX (Linux/Mac OSX) TTY (terminal) connection for R to interface with a serial port. I am certain that a tty connection for R could provide the functionality you are looking for, on POSIX systems. Unfortunately this feature is currently only available as a source code patch for R (not as an R package). P.S. Maybe Simon (from the r-devel discussion) has the right idea, that a tty connection should exploit the full POSIX terminal API, then input issues like this would have easy solutions... -Matt
This is really a user interface issue and the standard user interface is different between platforms. Would tcltk (or RGTK or ...) be a possible solution for you? tcltk is fairly consistent across platforms and does provide for this type of thing (you can have a button to press to continue and use the after function to send an automatic push if the user does not push it before a given time). -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.snow at imail.org 801.408.8111> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- > project.org] On Behalf Of Prof. John C Nash > Sent: Thursday, May 27, 2010 5:09 PM > To: r-help at r-project.org > Subject: [R] Wait for keystroke or timeout > > I would like to have a function that would wait either until a > specified timeout (in > seconds preferably) or until a key is pressed. I've found such a > function quite useful in > other programming environments in setting up dialogs with users or > displaying results, > rather like a timed slideshow that can be speeded up by hitting a key. > > Searching R-seek has led to wait() in the package 'audio', but when I > try, for example, > > joe<-wait(readline("hit a key to continue"), timeout=6) > > I am forced to wait the full timeout. > > Probably someone has done this before and I'm just not using the right > search terms. > Suggestions welcome. > > Thanks in advance. > > JN > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > and provide commented, minimal, self-contained, reproducible code.