ch09.xml revision 0f8248bf
10f8248bfSmrg<?xml version="1.0" encoding="UTF-8" ?> 20f8248bfSmrg<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" 30f8248bfSmrg "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> 4eb411b4bSmrg<chapter id='Bells'> 5e9fcaa8aSmrg<title>Bells</title> 60f8248bfSmrg<indexterm zone="Bells"><primary>bell</primary></indexterm> 7e9fcaa8aSmrg 8e9fcaa8aSmrg<para> 9e9fcaa8aSmrgThe core X protocol allows only applications to explicitly sound the system 10e9fcaa8aSmrgbell with a given duration, pitch, and volume. Xkb extends this capability by 11e9fcaa8aSmrgallowing clients to attach symbolic names to bells, disable audible bells, and 12e9fcaa8aSmrgreceive an event whenever the keyboard bell is rung. For the purposes of this 130f8248bfSmrgdocument, the 140f8248bfSmrg<firstterm>audible</firstterm> 150f8248bfSmrg<indexterm significance="preferred" zone="Bells"> 160f8248bfSmrg<primary>audible bell</primary></indexterm> 170f8248bfSmrg<indexterm significance="preferred" zone="Bells"> 180f8248bfSmrg<primary>bell</primary><secondary>audible</secondary></indexterm> 190f8248bfSmrgbell is defined to be the system bell, or the default keyboard bell, as 20e9fcaa8aSmrgopposed to any other audible sound generated elsewhere in the system. 21e9fcaa8aSmrg</para> 22e9fcaa8aSmrg 23e9fcaa8aSmrg 24e9fcaa8aSmrg<para> 250f8248bfSmrgYou can ask to receive 260f8248bfSmrg<symbol>XkbBellNotify</symbol> 270f8248bfSmrgevents (see <link linkend="Detecting_Bells">section 9.4</link>) when any client rings any one of the following: 28e9fcaa8aSmrg</para> 29e9fcaa8aSmrg 30e9fcaa8aSmrg<itemizedlist> 31e9fcaa8aSmrg<listitem> 32e9fcaa8aSmrg <para> 33e9fcaa8aSmrgThe default bell 34e9fcaa8aSmrg </para> 35e9fcaa8aSmrg</listitem> 36e9fcaa8aSmrg<listitem> 37e9fcaa8aSmrg <para> 380f8248bfSmrgAny bell on an input device that can be specified by a 390f8248bfSmrg<structfield>bell_class</structfield> 400f8248bfSmrgand 410f8248bfSmrg<structfield>bell_id</structfield> 420f8248bfSmrgpair 43e9fcaa8aSmrg </para> 44e9fcaa8aSmrg</listitem> 45e9fcaa8aSmrg<listitem> 46e9fcaa8aSmrg <para> 47e9fcaa8aSmrgAny bell specified only by an arbitrary name. (This is, from the server’s 48e9fcaa8aSmrgpoint of view, merely a name, and not connected with any physical 49e9fcaa8aSmrgsound-generating device. Some client application must generate the sound, or 50e9fcaa8aSmrgvisual feedback, if any, that is associated with the name.) 51e9fcaa8aSmrg </para> 52e9fcaa8aSmrg</listitem> 53e9fcaa8aSmrg</itemizedlist> 54e9fcaa8aSmrg 55e9fcaa8aSmrg<para> 560f8248bfSmrgYou can also ask to receive 570f8248bfSmrg<symbol>XkbBellNotify</symbol> 580f8248bfSmrgevents when the server rings the default bell or if any client has requested 59e9fcaa8aSmrgevents only (without the bell sounding) for any of the bell types previously 60e9fcaa8aSmrglisted. 61e9fcaa8aSmrg</para> 62e9fcaa8aSmrg 63e9fcaa8aSmrg<para> 640f8248bfSmrgYou can disable audible bells on a global basis (to set the 650f8248bfSmrg<emphasis>AudibleBell</emphasis> 660f8248bfSmrgcontrol, see <xref linkend="Keyboard_Controls" />). For example, a client that replaces the keyboard 670f8248bfSmrgbell with some other audible cue might want to turn off the 680f8248bfSmrg<emphasis>AudibleBell</emphasis> 690f8248bfSmrgcontrol to prevent the server from also generating a sound and avoid 700f8248bfSmrgcacophony. If you disable audible bells and request to receive 710f8248bfSmrg<symbol>XkbBellNotify</symbol> 720f8248bfSmrgevents, you can generate feedback different from the default bell. 73e9fcaa8aSmrg</para> 74e9fcaa8aSmrg 75e9fcaa8aSmrg 76e9fcaa8aSmrg<para> 770f8248bfSmrgYou can, however, override the 780f8248bfSmrg<emphasis>AudibleBell</emphasis> 790f8248bfSmrgcontrol by calling one of the functions that force the ringing of a bell in 800f8248bfSmrgspite of the setting of the 810f8248bfSmrg<emphasis>AudibleBell</emphasis> 820f8248bfSmrgcontrol — 830f8248bfSmrg<function>XkbForceDeviceBell</function> 840f8248bfSmrgor 850f8248bfSmrg<function>XkbForceBell</function> 860f8248bfSmrg(see <link linkend="Forcing_a_Server_Generated_Bell">section 9.3.3</link>). In this case the server does not generate a bell event. 87e9fcaa8aSmrg</para> 88e9fcaa8aSmrg 89e9fcaa8aSmrg 90e9fcaa8aSmrg<para> 91e9fcaa8aSmrgJust as some keyboards can produce keyclicks to indicate when a key is pressed 92e9fcaa8aSmrgor repeating, Xkb can provide feedback for the controls by using special beep 930f8248bfSmrgcodes. The 940f8248bfSmrg<emphasis>AccessXFeedback</emphasis> 950f8248bfSmrgcontrol is used to configure the specific types of operations that generate 960f8248bfSmrgfeedback. See <link linkend="The_AccessXFeedback_Control">section 10.6.3</link> for a discussion on 970f8248bfSmrg<emphasis>AccessXFeedback</emphasis> 980f8248bfSmrgcontrol. 99e9fcaa8aSmrg</para> 100e9fcaa8aSmrg 101e9fcaa8aSmrg<para> 102e9fcaa8aSmrgThis chapter describes bell names, the functions used to generate named bells, 103e9fcaa8aSmrgand the events the server generates for bells. 104e9fcaa8aSmrg</para> 105e9fcaa8aSmrg 106eb411b4bSmrg<sect1 id='Bell_Names'> 107e9fcaa8aSmrg<title>Bell Names</title> 108e9fcaa8aSmrg 109e9fcaa8aSmrg<para> 110e9fcaa8aSmrgYou can associate a name to an act of ringing a bell by converting the name to 111e9fcaa8aSmrgan Atom and then using this name when you call the functions listed in this 112e9fcaa8aSmrgchapter. If an event is generated as a result, the name is then passed to all 1130f8248bfSmrgother clients interested in receiving 1140f8248bfSmrg<symbol>XkbBellNotify</symbol> 1150f8248bfSmrgevents. Note that these are arbitrary names and that there is no binding to 116e9fcaa8aSmrgany sounds. Any sounds or other effects (such as visual bells on the screen) 117e9fcaa8aSmrgmust be generated by a client application upon receipt of the bell event 118e9fcaa8aSmrgcontaining the name. There is no default name for the default keyboard bell. 119e9fcaa8aSmrgThe server does generate some predefined bells for the AccessX controls (see 1200f8248bfSmrg<link linkend="The_AccessXFeedback_Control">section 10.6.3</link>). 1210f8248bfSmrgThese named bells are shown in <link linkend="table9.1">Table 9.1</link>; 1220f8248bfSmrgthe name is included 1230f8248bfSmrgin any bell event sent to clients that have requested to receive 1240f8248bfSmrg<symbol>XkbBellNotify</symbol> 1250f8248bfSmrgevents. 126e9fcaa8aSmrg</para> 127e9fcaa8aSmrg 1280f8248bfSmrg<table id='table9.1' frame='topbot'> 129e9fcaa8aSmrg<title>Predefined Bells</title> 130eb411b4bSmrg<?dbfo keep-together="always" ?> 131eb411b4bSmrg<tgroup cols='2' align='left' colsep='0' rowsep='0'> 132eb411b4bSmrg<colspec colname='c1' colwidth='1.0*'/> 133eb411b4bSmrg<colspec colname='c2' colwidth='1.0*'/> 134e9fcaa8aSmrg<thead> 135eb411b4bSmrg<row rowsep='1'> 136e9fcaa8aSmrg <entry>Action</entry> 137e9fcaa8aSmrg <entry>Named Bell</entry> 138e9fcaa8aSmrg</row> 139e9fcaa8aSmrg</thead> 140e9fcaa8aSmrg<tbody> 141eb411b4bSmrg<row> 142e9fcaa8aSmrg <entry>Indicator turned on</entry> 143e9fcaa8aSmrg <entry>AX_IndicatorOn</entry> 144e9fcaa8aSmrg</row> 145eb411b4bSmrg<row> 146e9fcaa8aSmrg <entry>Indicator turned off</entry> 147e9fcaa8aSmrg <entry>AX_IndicatorOff</entry> 148e9fcaa8aSmrg</row> 149eb411b4bSmrg<row> 150e9fcaa8aSmrg <entry>More than one indicator changed state</entry> 151e9fcaa8aSmrg <entry>AX_IndicatorChange</entry> 152e9fcaa8aSmrg</row> 153eb411b4bSmrg<row> 154e9fcaa8aSmrg <entry>Control turned on</entry> 155e9fcaa8aSmrg <entry>AX_FeatureOn</entry> 156e9fcaa8aSmrg</row> 157eb411b4bSmrg<row> 158e9fcaa8aSmrg <entry>Control turned off</entry> 159e9fcaa8aSmrg <entry>AX_FeatureOff</entry> 160e9fcaa8aSmrg</row> 161eb411b4bSmrg<row> 162e9fcaa8aSmrg <entry>More than one control changed state</entry> 163e9fcaa8aSmrg <entry>AX_FeatureChange</entry> 164e9fcaa8aSmrg</row> 165eb411b4bSmrg<row> 166e9fcaa8aSmrg <entry>SlowKeys and BounceKeys about to be turned on or off</entry> 167e9fcaa8aSmrg <entry>AX_SlowKeysWarning</entry> 168e9fcaa8aSmrg</row> 169eb411b4bSmrg<row> 170e9fcaa8aSmrg <entry>SlowKeys key pressed</entry> 171e9fcaa8aSmrg <entry>AX_SlowKeyPress</entry> 172e9fcaa8aSmrg</row> 173eb411b4bSmrg<row> 174e9fcaa8aSmrg <entry>SlowKeys key accepted</entry> 175e9fcaa8aSmrg <entry>AX_SlowKeyAccept</entry> 176e9fcaa8aSmrg</row> 177eb411b4bSmrg<row> 178e9fcaa8aSmrg <entry>SlowKeys key rejected</entry> 179e9fcaa8aSmrg <entry>AX_SlowKeyReject</entry> 180e9fcaa8aSmrg</row> 181eb411b4bSmrg<row> 182e9fcaa8aSmrg <entry>Accepted SlowKeys key released</entry> 183e9fcaa8aSmrg <entry>AX_SlowKeyRelease</entry> 184e9fcaa8aSmrg</row> 185eb411b4bSmrg<row> 186e9fcaa8aSmrg <entry>BounceKeys key rejected</entry> 187e9fcaa8aSmrg <entry>AX_BounceKeyReject</entry> 188e9fcaa8aSmrg</row> 189eb411b4bSmrg<row> 190e9fcaa8aSmrg <entry>StickyKeys key latched</entry> 191e9fcaa8aSmrg <entry>AX_StickyLatch</entry> 192e9fcaa8aSmrg</row> 193eb411b4bSmrg<row> 194e9fcaa8aSmrg <entry>StickyKeys key locked</entry> 195e9fcaa8aSmrg <entry>AX_StickyLock</entry> 196e9fcaa8aSmrg</row> 197eb411b4bSmrg<row> 198e9fcaa8aSmrg <entry>StickyKeys key unlocked</entry> 199e9fcaa8aSmrg <entry>AX_StickyUnlock</entry> 200e9fcaa8aSmrg </row> 201e9fcaa8aSmrg</tbody> 202e9fcaa8aSmrg</tgroup> 203e9fcaa8aSmrg</table> 204e9fcaa8aSmrg 205e9fcaa8aSmrg</sect1> 206eb411b4bSmrg<sect1 id='Audible_Bells'> 207e9fcaa8aSmrg<title>Audible Bells</title> 208e9fcaa8aSmrg 209e9fcaa8aSmrg<para> 210e9fcaa8aSmrgUsing Xkb you can generate bell events that do not necessarily ring the system 211e9fcaa8aSmrgbell. This is useful if you need to use an audio server instead of the system 212e9fcaa8aSmrgbeep. For example, when an audio client starts, it could disable the audible 2130f8248bfSmrgbell (the system bell) and then listen for 2140f8248bfSmrg<symbol>XkbBellNotify</symbol> 2150f8248bfSmrgevents (see <link linkend="Detecting_Bells">section 9.4</link>). When it receives a 2160f8248bfSmrg<symbol>XkbBellNotify</symbol> 2170f8248bfSmrgevent, the audio client could then send a request to an audio server to play a 218e9fcaa8aSmrgsound. 219e9fcaa8aSmrg</para> 220e9fcaa8aSmrg 221e9fcaa8aSmrg 222e9fcaa8aSmrg<para> 2230f8248bfSmrgYou can control the audible bells feature by passing the 2240f8248bfSmrg<symbol>XkbAudibleBellMask</symbol> 2250f8248bfSmrgto 2260f8248bfSmrg<function>XkbChangeEnabledControls</function> 2270f8248bfSmrg(see <link linkend="The_EnabledControls_Control">section 10.1.1</link>). If you set 2280f8248bfSmrg<symbol>XkbAudibleBellMask</symbol> 2290f8248bfSmrgon, the server rings the system bell when a bell event occurs. This is the 2300f8248bfSmrgdefault. If you set 2310f8248bfSmrg<symbol>XkbAudibleBellMask</symbol> 2320f8248bfSmrgoff and a bell event occurs, the server does not ring the system bell unless 2330f8248bfSmrgyou call 2340f8248bfSmrg<function>XkbForceDeviceBell</function> 2350f8248bfSmrgor 2360f8248bfSmrg<function>XkbForceBell</function> 2370f8248bfSmrg(see <link linkend="Forcing_a_Server_Generated_Bell">section 9.3.3</link>). 238e9fcaa8aSmrg</para> 239e9fcaa8aSmrg 240e9fcaa8aSmrg<para> 241e9fcaa8aSmrgAudible bells are also part of the per-client auto-reset controls. For more 2420f8248bfSmrginformation on auto-reset controls, see <link linkend="The_AutoReset_Control">section 10.1.2</link>. 243e9fcaa8aSmrg</para> 244e9fcaa8aSmrg 245e9fcaa8aSmrg</sect1> 246eb411b4bSmrg<sect1 id='Bell_Functions'> 247e9fcaa8aSmrg<title>Bell Functions</title> 248e9fcaa8aSmrg 249e9fcaa8aSmrg<para> 250e9fcaa8aSmrgUse the functions described in this section to ring bells and to generate bell 251e9fcaa8aSmrgevents. 252e9fcaa8aSmrg</para> 253e9fcaa8aSmrg 254e9fcaa8aSmrg<para> 255e9fcaa8aSmrgThe input extension has two types of feedbacks that can generate bells — bell 256e9fcaa8aSmrgfeedback and keyboard feedback. Some of the functions in this section have 2570f8248bfSmrg<structfield>bell_class</structfield> 2580f8248bfSmrgand 2590f8248bfSmrg<structfield>bell_id</structfield> 2600f8248bfSmrgparameters; set them as follows: Set 2610f8248bfSmrg<structfield>bell_class</structfield> 2620f8248bfSmrgto 2630f8248bfSmrg<symbol>BellFeedbackClass</symbol> 2640f8248bfSmrgor 2650f8248bfSmrg<symbol>KbdFeedbackClass</symbol>. 2660f8248bfSmrgA device can have more than one feedback of each type; set 2670f8248bfSmrg<structfield>bell_id</structfield> 2680f8248bfSmrgto the particular bell feedback of 2690f8248bfSmrg<structfield>bell_class</structfield> 2700f8248bfSmrgtype. 271e9fcaa8aSmrg</para> 272e9fcaa8aSmrg 273e9fcaa8aSmrg<para> 2740f8248bfSmrg<link linkend="table9.2">Table 9.2</link> shows the conditions that cause 2750f8248bfSmrga bell to sound or an <structname>XkbBellNotifyEvent</structname> 2760f8248bfSmrgto be generated when a bell function is called. 277e9fcaa8aSmrg</para> 278e9fcaa8aSmrg 2790f8248bfSmrg<table id='table9.2' frame='topbot'> 280e9fcaa8aSmrg<title>Bell Sounding and Bell Event Generating</title> 281eb411b4bSmrg<?dbfo keep-together="always" ?> 282eb411b4bSmrg<tgroup cols='4' align='left' colsep='0' rowsep='0'> 283eb411b4bSmrg<colspec colname='c1' colwidth='1.0*'/> 284eb411b4bSmrg<colspec colname='c2' colwidth='1.0*'/> 285eb411b4bSmrg<colspec colname='c3' colwidth='1.0*'/> 286eb411b4bSmrg<colspec colname='c4' colwidth='1.0*'/> 287e9fcaa8aSmrg<thead> 288eb411b4bSmrg <row rowsep='1'> 289e9fcaa8aSmrg <entry>Function called</entry> 290e9fcaa8aSmrg <entry>AudibleBell</entry> 291e9fcaa8aSmrg <entry>Server sounds a bell</entry> 292e9fcaa8aSmrg <entry>Server sends an XkbBellNotifyEvent</entry> 293e9fcaa8aSmrg </row> 294e9fcaa8aSmrg</thead> 295e9fcaa8aSmrg<tbody> 296eb411b4bSmrg<row> 297e9fcaa8aSmrg <entry>XkbDeviceBell</entry> 298e9fcaa8aSmrg <entry>On</entry> 299e9fcaa8aSmrg <entry>Yes</entry> 300e9fcaa8aSmrg <entry>Yes</entry> 301e9fcaa8aSmrg</row> 302eb411b4bSmrg<row> 303e9fcaa8aSmrg <entry>XkbDeviceBell</entry> 304e9fcaa8aSmrg <entry>Off</entry> 305e9fcaa8aSmrg <entry>No</entry> 306e9fcaa8aSmrg <entry>Yes</entry> 307e9fcaa8aSmrg</row> 308eb411b4bSmrg<row> 309e9fcaa8aSmrg <entry>XkbBell</entry> 310e9fcaa8aSmrg <entry>On</entry> 311e9fcaa8aSmrg <entry>Yes</entry> 312e9fcaa8aSmrg <entry>Yes</entry> 313e9fcaa8aSmrg</row> 314eb411b4bSmrg<row> 315e9fcaa8aSmrg <entry>XkbBell</entry> 316e9fcaa8aSmrg <entry>Off</entry> 317e9fcaa8aSmrg <entry>No</entry> 318e9fcaa8aSmrg <entry>Yes</entry> 319e9fcaa8aSmrg</row> 320eb411b4bSmrg<row> 321e9fcaa8aSmrg <entry>XkbDeviceBellEvent</entry> 322e9fcaa8aSmrg <entry>On or Off</entry> 323e9fcaa8aSmrg <entry>No</entry> 324e9fcaa8aSmrg <entry>Yes</entry> 325e9fcaa8aSmrg</row> 326eb411b4bSmrg<row> 327e9fcaa8aSmrg <entry>XkbBellEvent</entry> 328e9fcaa8aSmrg <entry>On or Off</entry> 329e9fcaa8aSmrg <entry>No</entry> 330e9fcaa8aSmrg <entry>Yes</entry> 331e9fcaa8aSmrg</row> 332eb411b4bSmrg<row> 333e9fcaa8aSmrg <entry>XkbDeviceForceBell</entry> 334e9fcaa8aSmrg <entry>On or Off</entry> 335e9fcaa8aSmrg <entry>Yes</entry> 336e9fcaa8aSmrg <entry>No</entry> 337e9fcaa8aSmrg</row> 338eb411b4bSmrg<row> 339e9fcaa8aSmrg <entry>XkbForceBell</entry> 340e9fcaa8aSmrg <entry>On or Off</entry> 341e9fcaa8aSmrg <entry>Yes</entry> 342e9fcaa8aSmrg <entry>No</entry> 343e9fcaa8aSmrg </row> 344e9fcaa8aSmrg</tbody> 345e9fcaa8aSmrg</tgroup> 346e9fcaa8aSmrg</table> 347e9fcaa8aSmrg 348eb411b4bSmrg<sect2 id='Generating_Named_Bells'> 349e9fcaa8aSmrg<title>Generating Named Bells</title> 350e9fcaa8aSmrg 351e9fcaa8aSmrg<para> 352e9fcaa8aSmrgTo ring the bell on an X input extension device or the default keyboard, use 3530f8248bfSmrg<function>XkbDeviceBell</function>. 354e9fcaa8aSmrg</para> 355e9fcaa8aSmrg 3560f8248bfSmrg<indexterm significance="preferred" zone="XkbDeviceBell"><primary><function>XkbDeviceBell</function></primary></indexterm> 3570f8248bfSmrg<funcsynopsis id="XkbDeviceBell"> 3580f8248bfSmrg <funcprototype> 3590f8248bfSmrg <funcdef>Bool <function>XkbDeviceBell</function></funcdef> 3600f8248bfSmrg<!-- ( 3610f8248bfSmrg<parameter>display, window, device_id, bell_class, bell_id, percent, name</parameter> 3620f8248bfSmrg) --> 3630f8248bfSmrg 3640f8248bfSmrg <paramdef>Display *<parameter>display</parameter></paramdef> 3650f8248bfSmrg <paramdef>Window <parameter>window</parameter></paramdef> 3660f8248bfSmrg <paramdef>unsigned int <parameter>device_spec</parameter></paramdef> 3670f8248bfSmrg <paramdef>unsigned int <parameter>bell_class</parameter></paramdef> 3680f8248bfSmrg <paramdef>unsigned int <parameter>bell_id</parameter></paramdef> 3690f8248bfSmrg <paramdef>int <parameter>percent</parameter></paramdef> 3700f8248bfSmrg <paramdef>Atom <parameter>name</parameter></paramdef> 3710f8248bfSmrg </funcprototype> 3720f8248bfSmrg</funcsynopsis> 3730f8248bfSmrg<variablelist> 3740f8248bfSmrg <varlistentry> 3750f8248bfSmrg <term> 3760f8248bfSmrg <parameter>display</parameter> 3770f8248bfSmrg </term> 3780f8248bfSmrg <listitem> 3790f8248bfSmrg <para> 3800f8248bfSmrg connection to the X server 3810f8248bfSmrg </para> 3820f8248bfSmrg </listitem> 3830f8248bfSmrg </varlistentry> 3840f8248bfSmrg <varlistentry> 3850f8248bfSmrg <term> 3860f8248bfSmrg <parameter>window</parameter> 3870f8248bfSmrg </term> 3880f8248bfSmrg <listitem> 3890f8248bfSmrg <para> 3900f8248bfSmrg window for which the bell is generated, or None 3910f8248bfSmrg </para> 3920f8248bfSmrg </listitem> 3930f8248bfSmrg </varlistentry> 3940f8248bfSmrg <varlistentry> 3950f8248bfSmrg <term> 3960f8248bfSmrg <parameter>device_spec</parameter> 3970f8248bfSmrg </term> 3980f8248bfSmrg <listitem> 3990f8248bfSmrg <para> 4000f8248bfSmrg device ID, or <symbol>XkbUseCoreKbd</symbol> 4010f8248bfSmrg </para> 4020f8248bfSmrg </listitem> 4030f8248bfSmrg </varlistentry> 4040f8248bfSmrg <varlistentry> 4050f8248bfSmrg <term> 4060f8248bfSmrg <parameter>bell_class</parameter> 4070f8248bfSmrg </term> 4080f8248bfSmrg <listitem> 4090f8248bfSmrg <para> 4100f8248bfSmrg X input extension bell class of the bell to be rung 4110f8248bfSmrg </para> 4120f8248bfSmrg </listitem> 4130f8248bfSmrg </varlistentry> 4140f8248bfSmrg <varlistentry> 4150f8248bfSmrg <term> 4160f8248bfSmrg <parameter>bell_id</parameter> 4170f8248bfSmrg </term> 4180f8248bfSmrg <listitem> 4190f8248bfSmrg <para> 4200f8248bfSmrg X input extension bell ID of the bell to be rung 4210f8248bfSmrg </para> 4220f8248bfSmrg </listitem> 4230f8248bfSmrg </varlistentry> 4240f8248bfSmrg <varlistentry> 4250f8248bfSmrg <term> 4260f8248bfSmrg <parameter>percent</parameter> 4270f8248bfSmrg </term> 4280f8248bfSmrg <listitem> 4290f8248bfSmrg <para> 4300f8248bfSmrg bell volume, from −100 to 100 inclusive 4310f8248bfSmrg </para> 4320f8248bfSmrg </listitem> 4330f8248bfSmrg </varlistentry> 4340f8248bfSmrg <varlistentry> 4350f8248bfSmrg <term> 4360f8248bfSmrg <parameter>name</parameter> 4370f8248bfSmrg </term> 4380f8248bfSmrg <listitem> 4390f8248bfSmrg <para> 4400f8248bfSmrg a name for the bell, or <symbol>NULL</symbol> 4410f8248bfSmrg </para> 4420f8248bfSmrg </listitem> 4430f8248bfSmrg </varlistentry> 4440f8248bfSmrg</variablelist> 445e9fcaa8aSmrg 446e9fcaa8aSmrg<para> 4470f8248bfSmrgSet 4480f8248bfSmrg<parameter>percent</parameter> 4490f8248bfSmrgto be the volume relative to the base volume for the keyboard as described for 4500f8248bfSmrg<function>XBell</function>. 451e9fcaa8aSmrg</para> 452e9fcaa8aSmrg 453e9fcaa8aSmrg<para> 4540f8248bfSmrgNote that 4550f8248bfSmrg<parameter>bell_class</parameter> 4560f8248bfSmrgand 4570f8248bfSmrg<parameter>bell_id</parameter> 4580f8248bfSmrgindicate the bell to physically ring. 4590f8248bfSmrg<parameter>name</parameter> 4600f8248bfSmrgis simply an arbitrary moniker for the client application’s use. 461e9fcaa8aSmrg</para> 462e9fcaa8aSmrg 463e9fcaa8aSmrg<para> 464e9fcaa8aSmrgTo determine the current feedback settings of an extension input device, use 4650f8248bfSmrg<function>XGetFeedbackControl</function>. 4660f8248bfSmrgSee <olink targetdoc='inputlib' targetptr='Controlling_Device_Feedback'>the 4670f8248bfSmrgX input extension documentation</olink> for more information on 4680f8248bfSmrg<function>XGetFeedbackControl</function> 4690f8248bfSmrgand related data structures. 470e9fcaa8aSmrg</para> 471e9fcaa8aSmrg 472e9fcaa8aSmrg<para> 4730f8248bfSmrgIf a compatible keyboard extension is not present in the X server, 4740f8248bfSmrg<function>XkbDeviceBell</function> 4750f8248bfSmrgimmediately returns 4760f8248bfSmrg<symbol>False</symbol>. 4770f8248bfSmrgOtherwise, 4780f8248bfSmrg<function>XkbDeviceBell</function> 479e9fcaa8aSmrgrings the bell as specified for the display and keyboard device and returns 4800f8248bfSmrg<symbol>True</symbol>. 4810f8248bfSmrgIf you have disabled the audible bell, the server does not ring the system 4820f8248bfSmrgbell, although it does generate a 4830f8248bfSmrg<symbol>XkbBellNotify</symbol> 4840f8248bfSmrgevent. 485e9fcaa8aSmrg</para> 486e9fcaa8aSmrg 487e9fcaa8aSmrg<para> 4880f8248bfSmrgYou can call 4890f8248bfSmrg<function>XkbDeviceBell</function> 4900f8248bfSmrgwithout first initializing the keyboard extension. 491e9fcaa8aSmrg</para> 492e9fcaa8aSmrg 493e9fcaa8aSmrg<para> 494e9fcaa8aSmrgAs a convenience function, Xkb provides a function to ring the bell on the 4950f8248bfSmrgdefault keyboard: 4960f8248bfSmrg<function>XkbBell</function>. 497e9fcaa8aSmrg</para> 498e9fcaa8aSmrg 4990f8248bfSmrg<indexterm significance="preferred" zone="XkbBell"><primary><function>XkbBell</function></primary></indexterm> 5000f8248bfSmrg<funcsynopsis id="XkbBell"> 5010f8248bfSmrg <funcprototype> 5020f8248bfSmrg <funcdef>Bool <function>XkbBell</function></funcdef> 5030f8248bfSmrg<!-- ( 5040f8248bfSmrg<parameter>display, window, percent, name</parameter> 5050f8248bfSmrg) --> 5060f8248bfSmrg 5070f8248bfSmrg <paramdef>Display *<parameter>display</parameter></paramdef> 5080f8248bfSmrg <paramdef>Window <parameter>window</parameter></paramdef> 5090f8248bfSmrg <paramdef>int <parameter>percent</parameter></paramdef> 5100f8248bfSmrg <paramdef>Atom <parameter>name</parameter></paramdef> 5110f8248bfSmrg </funcprototype> 5120f8248bfSmrg</funcsynopsis> 5130f8248bfSmrg<variablelist> 5140f8248bfSmrg <varlistentry> 5150f8248bfSmrg <term> 5160f8248bfSmrg <parameter>display</parameter> 5170f8248bfSmrg </term> 5180f8248bfSmrg <listitem> 5190f8248bfSmrg <para> 5200f8248bfSmrg connection to the X server 5210f8248bfSmrg </para> 5220f8248bfSmrg </listitem> 5230f8248bfSmrg </varlistentry> 5240f8248bfSmrg <varlistentry> 5250f8248bfSmrg <term> 5260f8248bfSmrg <parameter>window</parameter> 5270f8248bfSmrg </term> 5280f8248bfSmrg <listitem> 5290f8248bfSmrg <para> 5300f8248bfSmrg event window, or None 5310f8248bfSmrg </para> 5320f8248bfSmrg </listitem> 5330f8248bfSmrg </varlistentry> 5340f8248bfSmrg <varlistentry> 5350f8248bfSmrg <term> 5360f8248bfSmrg <parameter>percent</parameter> 5370f8248bfSmrg </term> 5380f8248bfSmrg <listitem> 5390f8248bfSmrg <para> 5400f8248bfSmrg relative volume, which can range from −100 to 100 inclusive 5410f8248bfSmrg </para> 5420f8248bfSmrg </listitem> 5430f8248bfSmrg </varlistentry> 5440f8248bfSmrg <varlistentry> 5450f8248bfSmrg <term> 5460f8248bfSmrg <parameter>name</parameter> 5470f8248bfSmrg </term> 5480f8248bfSmrg <listitem> 5490f8248bfSmrg <para> 5500f8248bfSmrg a bell name, or <symbol>NULL</symbol> 5510f8248bfSmrg </para> 5520f8248bfSmrg </listitem> 5530f8248bfSmrg </varlistentry> 5540f8248bfSmrg</variablelist> 555e9fcaa8aSmrg 556e9fcaa8aSmrg<para> 5570f8248bfSmrgIf a compatible keyboard extension isn’t present in the X server, 5580f8248bfSmrg<function>XkbBell</function> 5590f8248bfSmrgcalls 5600f8248bfSmrg<function>XBell</function> 5610f8248bfSmrgwith the specified 5620f8248bfSmrg<parameter>display</parameter> 5630f8248bfSmrgand 5640f8248bfSmrg<parameter>percent</parameter>, 5650f8248bfSmrgand returns 5660f8248bfSmrg<symbol>False</symbol>. 5670f8248bfSmrgOtherwise, 5680f8248bfSmrg<function>XkbBell</function> 5690f8248bfSmrgcalls 5700f8248bfSmrg<function>XkbDeviceBell</function> 5710f8248bfSmrgwith the specified 5720f8248bfSmrg<parameter>display</parameter>, 5730f8248bfSmrg<parameter>window</parameter>, 5740f8248bfSmrg<parameter>percent</parameter>, 5750f8248bfSmrgand 5760f8248bfSmrg<parameter>name</parameter>, 5770f8248bfSmrga 5780f8248bfSmrg<structfield>device_spec</structfield> 5790f8248bfSmrgof 5800f8248bfSmrg<symbol>XkbUseCoreKbd</symbol>, 5810f8248bfSmrga 5820f8248bfSmrg<structfield>bell_class</structfield> 5830f8248bfSmrgof 5840f8248bfSmrg<symbol>XkbDfltXIClass</symbol>, 5850f8248bfSmrgand a 5860f8248bfSmrg<structfield>bell_id</structfield> 5870f8248bfSmrgof 5880f8248bfSmrg<symbol>XkbDfltXIId</symbol>, 5890f8248bfSmrgand returns 5900f8248bfSmrg<symbol>True</symbol>. 591e9fcaa8aSmrg</para> 592e9fcaa8aSmrg 593e9fcaa8aSmrg<para> 594e9fcaa8aSmrgIf you have disabled the audible bell, the server does not ring the system 5950f8248bfSmrgbell, although it does generate a 5960f8248bfSmrg<symbol>XkbBellNotify</symbol> 5970f8248bfSmrgevent. 598e9fcaa8aSmrg</para> 599e9fcaa8aSmrg 600e9fcaa8aSmrg<para> 6010f8248bfSmrgYou can call 6020f8248bfSmrg<function>XkbBell</function> 6030f8248bfSmrgwithout first initializing the keyboard extension. 604e9fcaa8aSmrg</para> 605e9fcaa8aSmrg 606e9fcaa8aSmrg</sect2> 607eb411b4bSmrg<sect2 id='Generating_Named_Bell_Events'> 608e9fcaa8aSmrg<title>Generating Named Bell Events</title> 609e9fcaa8aSmrg 610e9fcaa8aSmrg<para> 611e9fcaa8aSmrgUsing Xkb, you can also generate a named bell event that does not ring any 612e9fcaa8aSmrgbell. This allows you to do things such as generate events when your 613e9fcaa8aSmrgapplication starts. 614e9fcaa8aSmrg</para> 615e9fcaa8aSmrg 616e9fcaa8aSmrg<para> 617e9fcaa8aSmrgFor example, if an audio client listens for these types of bells, it can 6180f8248bfSmrgproduce a <quote>whoosh</quote> sound when it receives a named bell event to indicate a 619e9fcaa8aSmrgclient just started. In this manner, applications can generate start-up 620e9fcaa8aSmrgfeedback and not worry about producing annoying beeps if an audio server is not 621e9fcaa8aSmrgrunning. 622e9fcaa8aSmrg</para> 623e9fcaa8aSmrg 624e9fcaa8aSmrg 625e9fcaa8aSmrg<para> 626e9fcaa8aSmrgTo cause a bell event for an X input extension device or for the keyboard, 6270f8248bfSmrgwithout ringing the corresponding bell, use 6280f8248bfSmrg<function>XkbDeviceBellEvent</function>. 629e9fcaa8aSmrg</para> 630e9fcaa8aSmrg 6310f8248bfSmrg<indexterm significance="preferred" zone="XkbDeviceBellEvent"><primary><function>XkbDeviceBellEvent</function></primary></indexterm> 6320f8248bfSmrg<funcsynopsis id="XkbDeviceBellEvent"> 6330f8248bfSmrg <funcprototype> 6340f8248bfSmrg <funcdef>Bool <function>XkbDeviceBellEvent</function></funcdef> 6350f8248bfSmrg<!-- ( 6360f8248bfSmrg<parameter>display, window, device_spec, bell_class, bell_id, percent, name</parameter> 6370f8248bfSmrg) --> 6380f8248bfSmrg 6390f8248bfSmrg <paramdef>Display *<parameter>display</parameter></paramdef> 6400f8248bfSmrg <paramdef>Window <parameter>window</parameter></paramdef> 6410f8248bfSmrg <paramdef>unsigned int <parameter>device_spec</parameter></paramdef> 6420f8248bfSmrg <paramdef>unsigned int <parameter>bell_class</parameter></paramdef> 6430f8248bfSmrg <paramdef>unsigned int <parameter>bell_id</parameter></paramdef> 6440f8248bfSmrg <paramdef>int <parameter>percent</parameter></paramdef> 6450f8248bfSmrg <paramdef>Atom <parameter>name</parameter></paramdef> 6460f8248bfSmrg </funcprototype> 6470f8248bfSmrg</funcsynopsis> 6480f8248bfSmrg<variablelist> 6490f8248bfSmrg <varlistentry> 6500f8248bfSmrg <term> 6510f8248bfSmrg <parameter>display</parameter> 6520f8248bfSmrg </term> 6530f8248bfSmrg <listitem> 6540f8248bfSmrg <para> 6550f8248bfSmrg connection to the X server 6560f8248bfSmrg </para> 6570f8248bfSmrg </listitem> 6580f8248bfSmrg </varlistentry> 6590f8248bfSmrg <varlistentry> 6600f8248bfSmrg <term> 6610f8248bfSmrg <parameter>window</parameter> 6620f8248bfSmrg </term> 6630f8248bfSmrg <listitem> 6640f8248bfSmrg <para> 6650f8248bfSmrg event window, or None 6660f8248bfSmrg </para> 6670f8248bfSmrg </listitem> 6680f8248bfSmrg </varlistentry> 6690f8248bfSmrg <varlistentry> 6700f8248bfSmrg <term> 6710f8248bfSmrg <parameter>device_spec</parameter> 6720f8248bfSmrg </term> 6730f8248bfSmrg <listitem> 6740f8248bfSmrg <para> 6750f8248bfSmrg device ID, or <symbol>XkbUseCoreKbd</symbol> 6760f8248bfSmrg </para> 6770f8248bfSmrg </listitem> 6780f8248bfSmrg </varlistentry> 6790f8248bfSmrg <varlistentry> 6800f8248bfSmrg <term> 6810f8248bfSmrg <parameter>bell_class</parameter> 6820f8248bfSmrg </term> 6830f8248bfSmrg <listitem> 6840f8248bfSmrg <para> 6850f8248bfSmrg input extension bell class for the event 6860f8248bfSmrg </para> 6870f8248bfSmrg </listitem> 6880f8248bfSmrg </varlistentry> 6890f8248bfSmrg <varlistentry> 6900f8248bfSmrg <term> 6910f8248bfSmrg <parameter>bell_id</parameter> 6920f8248bfSmrg </term> 6930f8248bfSmrg <listitem> 6940f8248bfSmrg <para> 6950f8248bfSmrg input extension bell ID for the event 6960f8248bfSmrg </para> 6970f8248bfSmrg </listitem> 6980f8248bfSmrg </varlistentry> 6990f8248bfSmrg <varlistentry> 7000f8248bfSmrg <term> 7010f8248bfSmrg <parameter>percent</parameter> 7020f8248bfSmrg </term> 7030f8248bfSmrg <listitem> 7040f8248bfSmrg <para> 7050f8248bfSmrg volume for the bell, which can range from −100 to 100 inclusive 7060f8248bfSmrg </para> 7070f8248bfSmrg </listitem> 7080f8248bfSmrg </varlistentry> 7090f8248bfSmrg <varlistentry> 7100f8248bfSmrg <term> 7110f8248bfSmrg <parameter>name</parameter> 7120f8248bfSmrg </term> 7130f8248bfSmrg <listitem> 7140f8248bfSmrg <para> 7150f8248bfSmrg a bell name, or <symbol>NULL</symbol> 7160f8248bfSmrg </para> 7170f8248bfSmrg </listitem> 7180f8248bfSmrg </varlistentry> 7190f8248bfSmrg</variablelist> 720e9fcaa8aSmrg 721e9fcaa8aSmrg<para> 7220f8248bfSmrgIf a compatible keyboard extension isn’t present in the X server, 7230f8248bfSmrg<function>XkbDeviceBellEvent</function> 7240f8248bfSmrgimmediately returns 7250f8248bfSmrg<symbol>False</symbol>. 7260f8248bfSmrgOtherwise, 7270f8248bfSmrg<function>XkbDeviceBellEvent</function> 7280f8248bfSmrgcauses an 7290f8248bfSmrg<symbol>XkbBellNotify</symbol> 7300f8248bfSmrgevent to be sent to all interested clients and returns 7310f8248bfSmrg<symbol>True</symbol>. 7320f8248bfSmrgSet 7330f8248bfSmrg<parameter>percent</parameter> 7340f8248bfSmrgto be the volume relative to the base volume for the keyboard as described for 7350f8248bfSmrg<function>XBell</function>. 736e9fcaa8aSmrg</para> 737e9fcaa8aSmrg 738e9fcaa8aSmrg 739e9fcaa8aSmrg<para> 7400f8248bfSmrgIn addition, 7410f8248bfSmrg<function>XkbDeviceBellEvent</function> 7420f8248bfSmrgmay generate 7430f8248bfSmrg<type>Atom</type> 7440f8248bfSmrgprotocol errors as well as 7450f8248bfSmrg<symbol>XkbBellNotify</symbol> 7460f8248bfSmrgevents. You can call 7470f8248bfSmrg<function>XkbBell</function> 7480f8248bfSmrgwithout first initializing the keyboard extension. 749e9fcaa8aSmrg</para> 750e9fcaa8aSmrg 751e9fcaa8aSmrg 752e9fcaa8aSmrg<para> 753e9fcaa8aSmrgAs a convenience function, Xkb provides a function to cause a bell event for 7540f8248bfSmrgthe keyboard without ringing the bell: 7550f8248bfSmrg<function>XkbBellEvent</function>. 756e9fcaa8aSmrg</para> 757e9fcaa8aSmrg 758e9fcaa8aSmrg 7590f8248bfSmrg<indexterm significance="preferred" zone="XkbBellEvent"><primary><function>XkbBellEvent</function></primary></indexterm> 7600f8248bfSmrg<funcsynopsis id="XkbBellEvent"> 7610f8248bfSmrg <funcprototype> 7620f8248bfSmrg <funcdef>Bool <function>XkbBellEvent</function></funcdef> 7630f8248bfSmrg<!-- ( 7640f8248bfSmrg<parameter>display, window, percent, name</parameter> 7650f8248bfSmrg) --> 7660f8248bfSmrg 7670f8248bfSmrg <paramdef>Display *<parameter>display</parameter></paramdef> 7680f8248bfSmrg <paramdef>Window <parameter>window</parameter></paramdef> 7690f8248bfSmrg <paramdef>int <parameter>percent</parameter></paramdef> 7700f8248bfSmrg <paramdef>Atom <parameter>name</parameter></paramdef> 7710f8248bfSmrg </funcprototype> 7720f8248bfSmrg</funcsynopsis> 7730f8248bfSmrg<variablelist> 7740f8248bfSmrg <varlistentry> 7750f8248bfSmrg <term> 7760f8248bfSmrg <parameter>display</parameter> 7770f8248bfSmrg </term> 7780f8248bfSmrg <listitem> 7790f8248bfSmrg <para> 7800f8248bfSmrg connection to the X server 7810f8248bfSmrg </para> 7820f8248bfSmrg </listitem> 7830f8248bfSmrg </varlistentry> 7840f8248bfSmrg <varlistentry> 7850f8248bfSmrg <term> 7860f8248bfSmrg <parameter>window</parameter> 7870f8248bfSmrg </term> 7880f8248bfSmrg <listitem> 7890f8248bfSmrg <para> 7900f8248bfSmrg the event window, or None 7910f8248bfSmrg </para> 7920f8248bfSmrg </listitem> 7930f8248bfSmrg </varlistentry> 7940f8248bfSmrg <varlistentry> 7950f8248bfSmrg <term> 7960f8248bfSmrg <parameter>percent</parameter> 7970f8248bfSmrg </term> 7980f8248bfSmrg <listitem> 7990f8248bfSmrg <para> 8000f8248bfSmrg relative volume, which can range from −100 to 100 inclusive 8010f8248bfSmrg </para> 8020f8248bfSmrg </listitem> 8030f8248bfSmrg </varlistentry> 8040f8248bfSmrg <varlistentry> 8050f8248bfSmrg <term> 8060f8248bfSmrg <parameter>name</parameter> 8070f8248bfSmrg </term> 8080f8248bfSmrg <listitem> 8090f8248bfSmrg <para> 8100f8248bfSmrg a bell name, or <symbol>NULL</symbol> 8110f8248bfSmrg </para> 8120f8248bfSmrg </listitem> 8130f8248bfSmrg </varlistentry> 8140f8248bfSmrg</variablelist> 815e9fcaa8aSmrg 816e9fcaa8aSmrg<para> 8170f8248bfSmrgIf a compatible keyboard extension isn’t present in the X server, 8180f8248bfSmrg<function>XkbBellEvent</function> 8190f8248bfSmrgimmediately returns 8200f8248bfSmrg<symbol>False</symbol>. 8210f8248bfSmrgOtherwise, 8220f8248bfSmrg<function>XkbBellEvent</function> 8230f8248bfSmrgcalls 8240f8248bfSmrg<function>XkbDeviceBellEvent</function> 8250f8248bfSmrgwith the specified 8260f8248bfSmrg<parameter>display</parameter>, 8270f8248bfSmrg<parameter>window</parameter>, 8280f8248bfSmrg<parameter>percent</parameter>, 8290f8248bfSmrgand 8300f8248bfSmrg<parameter>name</parameter>, 8310f8248bfSmrga 8320f8248bfSmrg<structfield>device_spec</structfield> 8330f8248bfSmrgof 8340f8248bfSmrg<symbol>XkbUseCoreKbd</symbol>, 8350f8248bfSmrga 8360f8248bfSmrg<structfield>bell_class</structfield> 8370f8248bfSmrgof 8380f8248bfSmrg<symbol>XkbDfltXIClass</symbol>, 8390f8248bfSmrgand a 8400f8248bfSmrg<structfield>bell_id</structfield> 8410f8248bfSmrgof 8420f8248bfSmrg<symbol>XkbDfltXIId</symbol>, 8430f8248bfSmrgand returns what 8440f8248bfSmrg<function>XkbDeviceBellEvent</function> 8450f8248bfSmrgreturns. 846e9fcaa8aSmrg</para> 847e9fcaa8aSmrg 848e9fcaa8aSmrg<para> 8490f8248bfSmrg<function>XkbBellEvent</function> 8500f8248bfSmrggenerates a <symbol>XkbBellNotify</symbol> 851e9fcaa8aSmrgevent. 852e9fcaa8aSmrg</para> 853e9fcaa8aSmrg 854e9fcaa8aSmrg 855e9fcaa8aSmrg<para> 8560f8248bfSmrgYou can call 8570f8248bfSmrg<function>XkbBellEvent</function> 858e9fcaa8aSmrgwithout first initializing the keyboard extension. 859e9fcaa8aSmrg</para> 860e9fcaa8aSmrg 861e9fcaa8aSmrg</sect2> 862eb411b4bSmrg<sect2 id='Forcing_a_Server_Generated_Bell'> 863e9fcaa8aSmrg<title>Forcing a Server-Generated Bell</title> 864e9fcaa8aSmrg 865e9fcaa8aSmrg<para> 866e9fcaa8aSmrgTo ring the bell on any keyboard, overriding user preference settings for 8670f8248bfSmrgaudible bells, use <function>XkbForceDeviceBell</function>. 868e9fcaa8aSmrg</para> 869e9fcaa8aSmrg 8700f8248bfSmrg<indexterm significance="preferred" zone="XkbForceDeviceBell"><primary><function>XkbForceDeviceBell</function></primary></indexterm> 8710f8248bfSmrg<funcsynopsis id="XkbForceDeviceBell"> 8720f8248bfSmrg <funcprototype> 8730f8248bfSmrg <funcdef>Bool <function>XkbForceDeviceBell</function></funcdef> 8740f8248bfSmrg<!-- ( 8750f8248bfSmrg<parameter>display, window, device_spec, bell_class, bell_id, percent</parameter> 8760f8248bfSmrg) --> 8770f8248bfSmrg 8780f8248bfSmrg <paramdef>Display *<parameter>display</parameter></paramdef> 8790f8248bfSmrg <paramdef>Window <parameter>window</parameter></paramdef> 8800f8248bfSmrg <paramdef>unsigned int <parameter>device_spec</parameter></paramdef> 8810f8248bfSmrg <paramdef>unsigned int <parameter>bell_class</parameter></paramdef> 8820f8248bfSmrg <paramdef>unsigned int <parameter>bell_id</parameter></paramdef> 8830f8248bfSmrg <paramdef>int <parameter>percent</parameter></paramdef> 8840f8248bfSmrg </funcprototype> 8850f8248bfSmrg</funcsynopsis> 8860f8248bfSmrg<variablelist> 8870f8248bfSmrg <varlistentry> 8880f8248bfSmrg <term> 8890f8248bfSmrg <parameter>display</parameter> 8900f8248bfSmrg </term> 8910f8248bfSmrg <listitem> 8920f8248bfSmrg <para> 8930f8248bfSmrg connection to the X server 8940f8248bfSmrg </para> 8950f8248bfSmrg </listitem> 8960f8248bfSmrg </varlistentry> 8970f8248bfSmrg <varlistentry> 8980f8248bfSmrg <term> 8990f8248bfSmrg <parameter>window</parameter> 9000f8248bfSmrg </term> 9010f8248bfSmrg <listitem> 9020f8248bfSmrg <para> 9030f8248bfSmrg event window, or None 9040f8248bfSmrg </para> 9050f8248bfSmrg </listitem> 9060f8248bfSmrg </varlistentry> 9070f8248bfSmrg <varlistentry> 9080f8248bfSmrg <term> 9090f8248bfSmrg <parameter>device_spec</parameter> 9100f8248bfSmrg </term> 9110f8248bfSmrg <listitem> 9120f8248bfSmrg <para> 9130f8248bfSmrg device ID, or <symbol>XkbUseCoreKbd</symbol> 9140f8248bfSmrg </para> 9150f8248bfSmrg </listitem> 9160f8248bfSmrg </varlistentry> 9170f8248bfSmrg <varlistentry> 9180f8248bfSmrg <term> 9190f8248bfSmrg <parameter>bell_class</parameter> 9200f8248bfSmrg </term> 9210f8248bfSmrg <listitem> 9220f8248bfSmrg <para> 9230f8248bfSmrg input extension class of the bell to be rung 9240f8248bfSmrg </para> 9250f8248bfSmrg </listitem> 9260f8248bfSmrg </varlistentry> 9270f8248bfSmrg <varlistentry> 9280f8248bfSmrg <term> 9290f8248bfSmrg <parameter>bell_id</parameter> 9300f8248bfSmrg </term> 9310f8248bfSmrg <listitem> 9320f8248bfSmrg <para> 9330f8248bfSmrg input extension ID of the bell to be rung 9340f8248bfSmrg </para> 9350f8248bfSmrg </listitem> 9360f8248bfSmrg </varlistentry> 9370f8248bfSmrg <varlistentry> 9380f8248bfSmrg <term> 9390f8248bfSmrg <parameter>percent</parameter> 9400f8248bfSmrg </term> 9410f8248bfSmrg <listitem> 9420f8248bfSmrg <para> 9430f8248bfSmrg relative volume, which can range from −100 to 100 inclusive 9440f8248bfSmrg </para> 9450f8248bfSmrg </listitem> 9460f8248bfSmrg </varlistentry> 9470f8248bfSmrg</variablelist> 948e9fcaa8aSmrg 949e9fcaa8aSmrg<para> 9500f8248bfSmrgIf a compatible keyboard extension isn’t present in the X server, 9510f8248bfSmrg<function>XkbForceDeviceBell</function> 9520f8248bfSmrgimmediately returns 9530f8248bfSmrg<symbol>False</symbol>. 9540f8248bfSmrgOtherwise, 9550f8248bfSmrg<function>XkbForceDeviceBell</function> 956e9fcaa8aSmrgrings the bell as specified for the display and keyboard device and returns 9570f8248bfSmrg<symbol>True</symbol>. 9580f8248bfSmrgSet 9590f8248bfSmrg<parameter>percent</parameter> 9600f8248bfSmrgto be the volume relative to the base volume for the keyboard as described for 9610f8248bfSmrg<function>XBell</function>. 9620f8248bfSmrgThere is no 9630f8248bfSmrg<structfield>name</structfield> 9640f8248bfSmrgparameter because 9650f8248bfSmrg<function>XkbForceDeviceBell</function> 9660f8248bfSmrgdoes not cause an 9670f8248bfSmrg<symbol>XkbBellNotify</symbol> 9680f8248bfSmrgevent. 969e9fcaa8aSmrg</para> 970e9fcaa8aSmrg 971e9fcaa8aSmrg<para> 9720f8248bfSmrgYou can call 9730f8248bfSmrg<function>XkbBell</function> 9740f8248bfSmrgwithout first initializing the keyboard extension. 975e9fcaa8aSmrg</para> 976e9fcaa8aSmrg 977e9fcaa8aSmrg<para> 978e9fcaa8aSmrgTo ring the bell on the default keyboard, overriding user preference settings 9790f8248bfSmrgfor audible bells, use 9800f8248bfSmrg<function>XkbForceBell</function>. 981e9fcaa8aSmrg</para> 982e9fcaa8aSmrg 9830f8248bfSmrg<indexterm significance="preferred" zone="XkbForceBell"><primary><function>XkbForceBell</function></primary></indexterm> 9840f8248bfSmrg<funcsynopsis id="XkbForceBell"> 9850f8248bfSmrg <funcprototype> 9860f8248bfSmrg <funcdef>Bool <function>XkbForceBell</function></funcdef> 9870f8248bfSmrg<!-- ( 9880f8248bfSmrg<parameter>display, percent)</parameter> --> 9890f8248bfSmrg 9900f8248bfSmrg <paramdef>Display *<parameter>display</parameter></paramdef> 9910f8248bfSmrg <paramdef>int <parameter>percent</parameter></paramdef> 9920f8248bfSmrg </funcprototype> 9930f8248bfSmrg</funcsynopsis> 9940f8248bfSmrg<variablelist> 9950f8248bfSmrg <varlistentry> 9960f8248bfSmrg <term> 9970f8248bfSmrg <parameter>display</parameter> 9980f8248bfSmrg </term> 9990f8248bfSmrg <listitem> 10000f8248bfSmrg <para> 10010f8248bfSmrg connection to the X server 10020f8248bfSmrg </para> 10030f8248bfSmrg </listitem> 10040f8248bfSmrg </varlistentry> 10050f8248bfSmrg <varlistentry> 10060f8248bfSmrg <term> 10070f8248bfSmrg <parameter>percent</parameter> 10080f8248bfSmrg </term> 10090f8248bfSmrg <listitem> 10100f8248bfSmrg <para> 10110f8248bfSmrg volume for the bell, which can range from −100 to 100 inclusive 10120f8248bfSmrg </para> 10130f8248bfSmrg </listitem> 10140f8248bfSmrg </varlistentry> 10150f8248bfSmrg</variablelist> 1016e9fcaa8aSmrg 1017e9fcaa8aSmrg<para> 10180f8248bfSmrgIf a compatible keyboard extension isn’t present in the X server, 10190f8248bfSmrg<function>XkbForceBell</function> 10200f8248bfSmrgcalls 10210f8248bfSmrg<function>XBell</function> 10220f8248bfSmrgwith the specified 10230f8248bfSmrg<parameter>display</parameter> 10240f8248bfSmrgand 10250f8248bfSmrg<parameter>percent</parameter> 10260f8248bfSmrgand returns 10270f8248bfSmrg<symbol>False</symbol>. 10280f8248bfSmrgOtherwise, 10290f8248bfSmrg<function>XkbForceBell</function> 10300f8248bfSmrgcalls 10310f8248bfSmrg<function>XkbForceDeviceBell</function> 10320f8248bfSmrgwith the specified 10330f8248bfSmrg<parameter>display</parameter> 10340f8248bfSmrgand 10350f8248bfSmrg<parameter>percent</parameter>, 10360f8248bfSmrg<structfield>device_spec</structfield> 10370f8248bfSmrg= 10380f8248bfSmrg<symbol>XkbUseCoreKbd</symbol>, 10390f8248bfSmrg<structfield>bell_class</structfield> 10400f8248bfSmrg= 10410f8248bfSmrg<symbol>XkbDfltXIClass</symbol>, 10420f8248bfSmrg<structfield>bell_id</structfield> 10430f8248bfSmrg= 10440f8248bfSmrg<symbol>XkbDfltXIId</symbol>, 10450f8248bfSmrg<structfield>window</structfield> 10460f8248bfSmrg= None, and 10470f8248bfSmrg<structfield>name</structfield> 10480f8248bfSmrg= 10490f8248bfSmrg<symbol>NULL</symbol>, 10500f8248bfSmrgand returns what 10510f8248bfSmrg<function>XkbForceDeviceBell</function> 10520f8248bfSmrgreturns. 1053e9fcaa8aSmrg</para> 1054e9fcaa8aSmrg 1055e9fcaa8aSmrg<para> 10560f8248bfSmrg<function>XkbForceBell</function> 10570f8248bfSmrgdoes not cause an 10580f8248bfSmrg<symbol>XkbBellNotify</symbol> 10590f8248bfSmrgevent. 1060e9fcaa8aSmrg</para> 1061e9fcaa8aSmrg 1062e9fcaa8aSmrg<para> 10630f8248bfSmrgYou can call 10640f8248bfSmrg<function>XkbBell</function> 10650f8248bfSmrgwithout first initializing the keyboard extension. 1066e9fcaa8aSmrg</para> 1067e9fcaa8aSmrg 1068e9fcaa8aSmrg</sect2> 1069e9fcaa8aSmrg</sect1> 1070eb411b4bSmrg<sect1 id='Detecting_Bells'> 1071e9fcaa8aSmrg<title>Detecting Bells</title> 1072e9fcaa8aSmrg 1073e9fcaa8aSmrg<para> 10740f8248bfSmrgXkb generates 10750f8248bfSmrg<symbol>XkbBellNotify</symbol> 10760f8248bfSmrgevents for all bells except for those resulting from calls to 10770f8248bfSmrg<function>XkbForceDeviceBell</function> 10780f8248bfSmrgand 10790f8248bfSmrg<function>XkbForceBell</function>. 10800f8248bfSmrgTo receive 10810f8248bfSmrg<symbol>XkbBellNotify</symbol> 10820f8248bfSmrgevents under all possible conditions, pass 10830f8248bfSmrg<symbol>XkbBellNotifyMask</symbol> 10840f8248bfSmrgin both the 10850f8248bfSmrg<parameter>bits_to_change</parameter> 10860f8248bfSmrgand 10870f8248bfSmrg<parameter>values_for_bits</parameter> 10880f8248bfSmrgparameters to 10890f8248bfSmrg<function>XkbSelectEvents</function> 10900f8248bfSmrg(see <link linkend="Selecting_Xkb_Events">section 4.3</link>). 1091e9fcaa8aSmrg</para> 1092e9fcaa8aSmrg 1093e9fcaa8aSmrg<para> 10940f8248bfSmrgThe 10950f8248bfSmrg<symbol>XkbBellNotify</symbol> 10960f8248bfSmrgevent has no event details. It is either selected or it is not. However, you 10970f8248bfSmrgcan call 10980f8248bfSmrg<function>XkbSelectEventDetails</function> 10990f8248bfSmrgusing 11000f8248bfSmrg<symbol>XkbBellNotify</symbol> 11010f8248bfSmrgas the 11020f8248bfSmrg<structfield>event_type</structfield> 11030f8248bfSmrgand specifying 11040f8248bfSmrg<symbol>XkbAllBellEventsMask</symbol> 11050f8248bfSmrgin 11060f8248bfSmrg<parameter>bits_to_change</parameter> 11070f8248bfSmrgand 11080f8248bfSmrg<parameter>values_for_bits</parameter>. 11090f8248bfSmrgThis has the same effect as a call to 11100f8248bfSmrg<function>XkbSelectEvents</function>. 1111e9fcaa8aSmrg</para> 1112e9fcaa8aSmrg 1113e9fcaa8aSmrg<para> 11140f8248bfSmrgThe structure for the 11150f8248bfSmrg<symbol>XkbBellNotify</symbol> 11160f8248bfSmrgevent type contains: 1117e9fcaa8aSmrg 11180f8248bfSmrg<programlisting> 1119e9fcaa8aSmrgtypedef struct _XkbBellNotify { 11200f8248bfSmrg int type; /* Xkb extension base event code */ 11210f8248bfSmrg unsigned long serial; /* X server serial number for event */ 11220f8248bfSmrg Bool send_event; /* <symbol>True</symbol> ⇒ synthetically generated */ 11230f8248bfSmrg Display * display; /* server connection where event generated */ 11240f8248bfSmrg Time time; /* server time when event generated */ 11250f8248bfSmrg int xkb_type; /* <symbol>XkbBellNotify</symbol> */ 11260f8248bfSmrg unsigned int device; /* Xkb device ID, will not be <symbol>XkbUseCoreKbd</symbol> */ 11270f8248bfSmrg int percent; /* requested volume as % of max */ 11280f8248bfSmrg int pitch; /* requested pitch in Hz */ 11290f8248bfSmrg int duration; /* requested duration in microseconds */ 11300f8248bfSmrg unsigned int bell_class; /* X input extension feedback class */ 11310f8248bfSmrg unsigned int bell_id; /* X input extension feedback ID */ 11320f8248bfSmrg Atom name; /* "name" of requested bell */ 11330f8248bfSmrg Window window; /* window associated with event */ 11340f8248bfSmrg Bool event_only; /* <symbol>False</symbol> → the server did not produce a beep */ 11350f8248bfSmrg} <structname>XkbBellNotifyEvent</structname>; 1136e9fcaa8aSmrg</programlisting></para> 1137e9fcaa8aSmrg 1138e9fcaa8aSmrg<para> 1139e9fcaa8aSmrgIf your application needs to generate visual bell feedback on the screen when 11400f8248bfSmrgit receives a bell event, use the window ID in the 11410f8248bfSmrg<structname>XkbBellNotifyEvent</structname>, 11420f8248bfSmrgif present. 1143e9fcaa8aSmrg</para> 1144e9fcaa8aSmrg 1145e9fcaa8aSmrg</sect1> 1146e9fcaa8aSmrg</chapter> 1147