help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Ding doing nothing


From: Bob Proulx
Subject: Re: Ding doing nothing
Date: Fri, 9 Jan 2015 14:47:51 -0700
User-agent: Mutt/1.5.23 (2014-03-12)

Marcin Borkowski wrote:
> Well, it does not...  Maybe I should just live with it (and turn the
> "visual bell" on).

There are a lot of reasons why the tty bell might not ring on modern
computer systems.  Sven already noted that it uses the PC speaker.
Usually that has really harsh binary output audio suitable only for
very limited noise making.  A lot of modern computers don't even have
a PC speaker these days.  It is considered obsolescent hardware having
been replaced by a sound card with speakers.  On several of my
computers there isn't any PC speaker present.  Therefore on those
systems there can't be a traditional tty bell that rings through the
PC speaker.

In addition to the older Linux kernel module pcspkr there is a newer
module that uses snd_pcsp.  On my system in order to prevent the tty
bell I have to blacklist both of those kernel modules.

On my Debian Sid system the tty bell is routed through the sound card
speakers.  This uses ALSA.  There is an alsa mixer control for Beep.
In the alsa control it may be muted or unmuted.  Try looking for that
control.

  amixer scontrols
  amixer get Beep
  amixer set Beep 50% unmute

It is possible that you have PulseAudio installed which will override
all of the audio controls.  I won't say anything more other than on my
system in order to get a working sound system I need to remove PA.  YMMV.

So first I would really check that your system has the hardware
capability for ringing the terminal bell.  It might not.

On a system with a working terminal bell the following will ring the
bell in a simple and automatable way.  It basically emits ASCII
character 7 the BEL character.  In Emacs every C-g (control-g is the
ascii 0x7 BEL character) rings the bell.  But this can be done in a
loop while testing and debugging.

  printf "\a"
  while sleep 1; do printf "Ding! \a\n"; done

As for looking at the bell configuration if you are running X then
check 'xset q' for bell information.  It might be disabled in X.
On my system:

  $ xset q | grep bell
    bell percent:  50    bell pitch:  400    bell duration:  100

You mentioned visual bell.  If you are using screen then it also
interprets the BEL character too.  If you are using ssh to a remote
system and screen there then it is still the local terminal that
handles the tty bell, if it receives the ASCII BEL 7 character.

I have seen BIOS configurations that allow for enabling and disabling
the PC Speaker.

There are so many ways for it to be blocked that it is hard to have a
single cookbook way of controlling every possibilty.  All I can do is
suggest to get to the lowest level available for debugging and then to
wish you good luck.

Good Luck!
Bob



reply via email to

[Prev in Thread] Current Thread [Next in Thread]