Alright, well I opened https://bugs.freedesktop.org/show_bug.cgi?id=27118 for whoever wants to fix it...
Thanks, Peter. On Mar 16, 2010, at 16:52, Peter Hutterer wrote: > On Tue, Mar 16, 2010 at 04:37:31PM -0700, Jeremy Huddleston wrote: >> I started looking into this because a user reported that XQuartz was still >> beeping in his xterm even though he uses 'xset -b' ... it turns out that >> xterm is using XkbBell() rather than XBell(). Even with 'xset -b', the >> audible bell is still calling DDXRingBell() with volume = 50... >> >> I made a reduced test case that does: >> >> XBell(dpy, 0); // No beep with 'xset -b' >> XkbBell(dpy, 0, 0, None); // Beep with vol=50 with 'xset -b' >> >> shouldn't these be the same? > > I think so. This may be some wierd interaction between core and XKB with the > bell feedback classes though, where XKB slips through the cracks because on > some device the base is still on the default. No idea on the details though. > > Cheers, > Peter > >> On Mar 16, 2010, at 15:30, Peter Hutterer wrote: >> >>> On Tue, Mar 16, 2010 at 01:12:54PM -0700, Jeremy Huddleston wrote: >>>> Actually, as I read this again, I noticed that it is behaving as per the >>>> spec: >>>> >>>> XBell(dpy, 100) with base = 0: >>>> base - [(base * percent) / 100] + percent = 0 - 0 + 100 = 100 >>>> >>>> XBell(dpy, 100) with base = 100: >>>> base - [(base * percent) / 100] + percent = 100 - 100 + 100 = 100 >>>> >>>> So... this just seems a bit deceptive... if 'xset -b' is supposed to mute >>>> the keyboard bell, why was XBell() designed to work around this? >>> >>> I think you need to ask the question the other way round - why does >>> xset -b provide a functionality that XBell() can route around. I'm pretty >>> sure XBell() was there first :) >>> >>> Looks like to really disable the bell for core requests you need to call >>> XkbSetControls() with the XkbAudibleBellMask. That way it can only be >>> overridden by a forced XkbBell() request, not by any core requests. >>> xset at this point doesn't do xkb but I don't se why it couldn't. >>> >>> Cheers, >>> Peter >>> >>> >>>> On Mar 16, 2010, at 11:47, Jeremy Huddleston wrote: >>>> >>>>> I turn off the bell using 'xset -b' : >>>>> ~ $ xset -q | grep bell >>>>> bell percent: 0 bell pitch: 400 bell duration: 100 >>>>> >>>>> but when I do XBell(dpy, 100), the bell still rings at volume 100. >>>>> >>>>> #0 DDXRingBell (volume=100, pitch=400, duration=100) at quartzAudio.c:223 >>>>> #1 0x0000000100138ba2 in CoreKeyboardBell (volume=100, pDev=0x115b708e0, >>>>> arg=0x115b71100, something=0) at devices.c:498 >>>>> #2 0x0000000100105114 in XkbHandleBell (force=0 '\0', eventOnly=0 '\0', >>>>> kbd=0x115b708e0, percent=100 'd', pCtrl=0x115b71100, class=0 '\0', >>>>> name=0, pWin=0x0, pClient=0x115e11c00) at xkbEvents.c:514 >>>>> >>>>> Shouldn't the bell percent set by 'xset' be multiplied by the volume >>>>> passed to XBell? From XBell(3): >>>>> >>>>> """ >>>>> The XBell function rings the bell on the keyboard on the specified >>>>> display, if possible. The specified >>>>> volume is relative to the base volume for the keyboard. If the value >>>>> for the percent argument is not in >>>>> the range -100 to 100 inclusive, a BadValue error results. The >>>>> volume at which the bell rings when the >>>>> percent argument is nonnegative is: >>>>> >>>>> base - [(base * percent) / 100] + percent >>>>> >>>>> The volume at which the bell rings when the percent argument is >>>>> negative is: >>>>> >>>>> base + [(base * percent) / 100] >>>>> """ >>>>> >>>>> --Jeremy >>> >>> _______________________________________________ >>> xorg-devel@lists.x.org: X.Org development >>> Archives: http://lists.x.org/archives/xorg-devel >>> Info: http://lists.x.org/mailman/listinfo/xorg-devel >> > > > _______________________________________________ > xorg-devel@lists.x.org: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel