Deutsch English Français Italiano |
<vflpv1$gqv6$1@dont-email.me> 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: Muttley@dastardlyhq.com Newsgroups: comp.unix.programmer Subject: Re: Beeping in Linux Date: Sun, 27 Oct 2024 16:32:33 -0000 (UTC) Organization: A noiseless patient Spider Lines: 56 Message-ID: <vflpv1$gqv6$1@dont-email.me> References: <vfkt6j$74bf$1@dont-email.me> <185a06463a1c6a2af69508bd1ec2d2a64587ce7f.camel@gmail.com> Content-Type: text/plain; charset="UTF-8" Injection-Date: Sun, 27 Oct 2024 17:32:34 +0100 (CET) Injection-Info: dont-email.me; posting-host="5b0c30c76bdc34b692c7cbe47d9cd4a6"; logging-data="551910"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+nfMjNMd5mCLRnztbslpBe" Cancel-Lock: sha1:Hsd+WPZk2JcwU1j39UGnHyWkHqA= Bytes: 2254 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