[R] How can we ring a bell in Windows?

Prof Brian Ripley ripley at stats.ox.ac.uk
Tue Mar 8 12:51:09 CET 2005


On Tue, 8 Mar 2005, Martin Maechler wrote:

>>>>>> "Duncan" == Duncan Murdoch <murdoch at stats.uwo.ca>
>>>>>>     on Mon, 07 Mar 2005 19:32:17 +0000 writes:
>
>    Duncan> On Mon, 7 Mar 2005 18:18:37 +0000 (GMT), Prof Brian
>    Duncan> Ripley <ripley at stats.ox.ac.uk> wrote :
>
>    >> On Mon, 7 Mar 2005, Duncan Murdoch wrote:
>    >>
>    >>> On Tue, 8 Mar 2005 00:31:07 +0800 (CST), Lu Joseph
>    >>> <c_joseph_lu at yahoo.com.tw> wrote :
>    >>>
>    >>>> Hello useRs,
>    >>>>
>    >>>> Is there a way to write code in R to ring a bell in
>    >>>> Windows?
>    >>>  If you load the tcltk package, then
>    >>>
>    >>> tkbell()
>    >>>
>    >>> will get you a bell on more platforms than just Windows.
>    >>> If you don't want to use tcltk, then you could call the
>    >>> Windows API function MessageBeep from some C code, but I
>    >>> don't think we have a "bell" or "beep" function in the
>    >>> standard R packages.
>    >>  But there is the ANSI "\a": cat("\n") works as expected,
>    >> on all platforms.
>
> {and of course,   cat("\a")   was meant above}
>
>    Duncan> Perhaps we should have a beep() or bell() function,
>    Duncan> to remind those of us who never knew all the C
>    Duncan> escapes and wouldn't have guessed that the ancient
>    Duncan> ASCII control codes still function.

Well, they are in the current C99 standard, section 5.2.2.

>    Duncan> I'll put it on my list...
>    Duncan> Duncan Murdoch
>
> good.  Yes that would be a very sensible encapsulation of
> functionality.
>
> Note that ASCII control codes don't work on all
> kinds of terminals, e.g., they don't work in ESS  --- but ESS
> could be made to react smartly to a beep() function call.

Why does ESS implement only some of the ANSI/C control codes? That looks 
like an ESS deficiency.  I have never come across any other terminal that 
did not.  These are in the ISO C standard, although the "a" is for 
"alarm", and that need not be a sound (it says "audible or visible").
So alarm() would be better than beep().

Would it not be better to correct the problem in ESS: there are lots of 
other ways that \a might be sent to stdout?

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list