Terminal control/Ringing the terminal bell: Difference between revisions

From Rosetta Code
Content added Content deleted
(PL/I entry created)
(add gnuplot)
Line 109: Line 109:


<lang forth>^G emit</lang>
<lang forth>^G emit</lang>

=={{header|gnuplot}}==
<lang gnuplot>print "\007"</lang>


=={{header|Haskell}}==
=={{header|Haskell}}==

Revision as of 01:27, 22 September 2012

Task
Terminal control/Ringing the terminal bell
You are encouraged to solve this task according to the task description, using any language you may know.

Make the terminal running the program ring its "bell". On modern terminal emulators, this may be done by playing some other sound which might or might not be configurable, or by flashing the title bar or inverting the colors of the screen, but was classically a physical bell within the terminal. It is usually used to indicate a problem where a wrong character has been typed.

In most terminals, if the Bell character (ASCII code 7, \a in C) is printed by the program, it will cause the terminal to ring its bell. This is a function of the terminal, and is independent of the programming language of the program, other than the ability to print a particular character to standard out.

Ada

<lang ada>with Ada.Text_IO; use Ada.Text_IO; with Ada.Characters.Latin_1;

procedure Bell is begin

  Put(Ada.Characters.Latin_1.BEL);

end Bell;</lang>

AutoHotkey

<lang AutoHotkey> fileappend, `a, * </lang>

This requires that you compile the exe in console mode (see Lexikos script to change this) or pipe the file through more: autohotkey bell.ahk |more

AWK

<lang awk>BEGIN { print "\a" # Ring the bell }</lang>

BASIC

Applesoft BASIC

<lang Applesoft BASIC> 10 PRINT CHR$ (7);</lang>

Integer BASIC

You can't see it, but the bell character (Control G) is embedded in what looks like an empty string on line 10. <lang Integer BASIC> 10 PRINT "";: REM ^G IN QUOTES

 20 END</lang>

Locomotive Basic

<lang locobasic>10 PRINT CHR$(7)</lang>

ZX Spectrum Basic

The ZX Spectrum had a speaker, rather than a bell. Here we use middle C as a bell tone, but we could produce a different note by changing the final zero to a different value.

<lang basic>BEEP 0.2,0</lang>

BBC BASIC

Assuming that the platform the program is running on rings the bell when CHR$7 is sent to the VDU driver:

<lang bbcbasic>VDU 7</lang>

Befunge

<lang befunge>7,@</lang>

Brainf***

Assuming the output stream is connected to a TTY, printing BEL should ring its bell.

<lang brainfuck> I

 +
+ +
+++

+-+-+

 .</lang>

C

<lang c>#include <stdio.h> int main() {

 printf("\a");
 return 0;

}</lang>

C#

Inside a function: <lang csharp>// the simple version: System.Console.Write("\a"); // will beep System.Threading.Thread.Sleep(1000); // will wait for 1 second System.Console.Beep(); // will beep a second time System.Threading.Thread.Sleep(1000);

// System.Console.Beep() also accepts (int)hertz and (int)duration in milliseconds: System.Console.Beep(440, 2000); // default "concert pitch" for 2 seconds </lang>

Delphi

<lang Delphi>program TerminalBell;

{$APPTYPE CONSOLE}

begin

 Writeln(#7);

end.</lang>


E

<lang e>print("\u0007")</lang>

Forth

<lang forth>7 emit</lang>

Works with: GNU Forth

<lang forth>#bell emit</lang>

Works with: iForth

<lang forth>^G emit</lang>

gnuplot

<lang gnuplot>print "\007"</lang>

Haskell

<lang haskell>main = putStr "\a"</lang>

Icon and Unicon

Works on both Icon and Unicon.

<lang Icon> procedure main ()

 write ("\7") # ASCII 7 rings the bell under Bash

end </lang>

Java

<lang java>public class Bell{

   public static void main(String[] args){
       java.awt.Toolkit.getDefaultToolkit().beep();
       //or
       System.out.println((char)7);
   }

}</lang>

<lang logo>type char 7</lang>

Mathematica

<lang Mathematica>Print["\007"]</lang>


Objeck

<lang objeck>7->As(Char)->PrintLine();</lang>

Pascal

See Delphi

Perl

<lang perl>print "\a";</lang>

Perl 6

<lang perl6>print 7.chr;</lang>

PicoLisp

<lang PicoLisp>(beep)</lang>

PL/I

<lang PL/I> declare bell character (1);

  unspec (bell) = '00000111'b;
  put edit (bell) (a);</lang>

PostScript

The following will only work in a PostScript interpreter that sends output to a terminal. It will very likely not make a printer beep. <lang postscript>(\007) print</lang>

PowerShell

One can either use the ASCII BEL character which only works in a console (i.e. not in a graphical PowerShell host such as PowerShell ISE): <lang powershell>"`a"</lang> or use the .NET Console class which works independent of the host application: <lang powershell>[Console]::Beep()</lang>

PureBasic

<lang PureBasic>Print(#BEL$)</lang>

Python

<lang python>print "\a"</lang>

R

<lang R>alarm()</lang>

Retro

<lang Retro>7 putc</lang>

REXX

There is no standard REXX built-in function to handle the sounding of the bell or a PC's speaker. However, some REXX interpreters have added a non-stardard BIF. <lang rexx>call beep(freq [,duration]) /*supported (kinda) by Regina. */

call sound(freq [,duration ]) /*supported by PC/REXX. */

say '07'x /*works under the Windows DOS shell.*/

say copies('07'x,100) /*as above, but much more annoying. */</lang>

Ruby

<lang python>print "\a"</lang>

SNUSP

<lang snusp>$+++++++.#</lang>

Tcl

<lang tcl>puts -nonewline "\a";flush stdout</lang>

UNIX Shell

Works with: Bourne Shell
Works with: bash

<lang sh>#!/bin/sh

  1. Ring the terminal bell
  2. echo "\a" # does not work in some shells

tput bel</lang>