As others suggested, check python. It's not to difficult and most of it is
cross platform.
There are several ways to get chars, both blocking and non-blocking.
I was thinking about curses, but there are other ways.
>From python docs:
> While curses is most widely used in the Unix environment, versions are
> available for DOS, OS/2, and possibly other systems as well. This extension
> module is designed to match the API of ncurses, an open-source curses
> library hosted on Linux and the BSD variants of Unix.
>
The first thing that comes to my mind is doing something based on threads,
assuming that beeping is a blocking function (doesn't return until the beep
ends).
start a thread that accepts beep requests (and performs the beeping)
last_beep_end_time = now()
while akey is pressed:
speaker_is_idle = now() > last_beep_end_time
if akey is quit_key:
quit
if akey is key1 and the speaker is idle:
ask the thread to beep
compute last_beep_end_time (at which the beep ends, eg now + 100ms)
...
silently ignore keypresses while the speaker is already beeping.
Cheers,
Joseph