Deutsch   English   Français   Italiano  
<185a06463a1c6a2af69508bd1ec2d2a64587ce7f.camel@gmail.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: wij <wyniijj5@gmail.com>
Newsgroups: comp.unix.programmer
Subject: Re: Beeping in Linux
Date: Sun, 27 Oct 2024 20:00:34 +0800
Organization: A noiseless patient Spider
Lines: 53
Message-ID: <185a06463a1c6a2af69508bd1ec2d2a64587ce7f.camel@gmail.com>
References: <vfkt6j$74bf$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Injection-Date: Sun, 27 Oct 2024 13:00:35 +0100 (CET)
Injection-Info: dont-email.me; posting-host="cb573552714cb9d77c9de13a369341c7";
	logging-data="466568"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19QDDQ7IAmqYFDHWA8IIIJE"
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39)
Cancel-Lock: sha1:dFaEZNvXlh1AjaDZV1F7bL5sBOM=
In-Reply-To: <vfkt6j$74bf$1@dont-email.me>
Bytes: 2245

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__