• Re: Beeping in Linux

    From Marcel Mueller@21:1/5 to All on Sun Oct 27 12:46:50 2024
    Am 27.10.24 um 09:21 schrieb Muttley@dastardlyhq.com:
    I'm looking at a way of making the machine beep without relying on having a TTY available to send \7 to or going all heavyweight with ALSA.

    Many PC hardware has no embedded speaker anymore.


    Marcel

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Muttley@dastardlyhq.com@21:1/5 to wij on Sun Oct 27 16:32:33 2024
    On Sun, 27 Oct 2024 20:00:34 +0800
    wij <wyniijj5@gmail.com> wrote:
    On Sun, 2024-10-27 at 08:21 +0000, Muttley@dastardlyhq.com wrote:
    I'm looking at a way of making the machine beep without relying on having=
    a=20
    TTY available to send \7 to or going all heavyweight with ALSA.=20
    =20
    I've found something online that mentioned ioctl() + the KDMTONE option b= >ut I=20
    can't find any example code. Does anyone know how its done?
    =20
    Thanks for any help
    =20

    This is the beep(..) implement in libwy https://sourceforge.net/projects/cs= >call/files/latest/download
    Root privilege is required.

    /* Copyright is licensed by GNU LGPL, see file COPYING. by I.J.Wang 2= >018
    =20
    This file is header only
    */
    #ifndef WY_IOCTL_H__
    #define WY_IOCTL_H__
    #define WY_IOCTL_VERSION 69

    #include <sys/ioctl.h>
    #include <linux/kd.h>

    #ifndef CLOCK_TICK_RATE
    #define CLOCK_TICK_RATE 1193180
    #endif

    namespace Wy {

    inline
    Wy::Errno beep(Wy::FileHandle fh, unsigned int freq, unsigned int msec)
    {
    Wy::Errno r; if(((msec&0xffff)!=3Dmsec)||(freq<=3D0)||(CLOCK_TICK_RATE/freq>0xffff)) {
    WY_RETURN( EINVAL );
    }
    if((::ioctl(fh.fd(),KDMKTONE,( (msec<<16)|(CLOCK_TICK_RATE/freq) )))=3D=3D=
    -1) {
    WY_RETURN(errno);
    }
    return Wy::Ok;
    };

    }; // end namespce Wy

    #endif // end WY_IOCTL_H__

    Thanks

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)