appB.xml revision 9e7bcd65
19e7bcd65Smrg<appendix id='Translation_Table_Syntax'> 29e7bcd65Smrg<title>Translation Table Syntax</title> 39e7bcd65Smrg<para><emphasis role='strong'>Notation</emphasis></para> 49e7bcd65Smrg 59e7bcd65Smrg<para> 69e7bcd65SmrgSyntax is specified in EBNF notation with the following conventions: 79e7bcd65Smrg</para> 89e7bcd65Smrg 99e7bcd65Smrg<informaltable frame='none'> 109e7bcd65Smrg <?dbfo keep-together="auto" ?> 119e7bcd65Smrg <tgroup cols='2' align='left' colsep='0' rowsep='0'> 129e7bcd65Smrg <colspec colwidth='0.1*' colname='c1'/> 139e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 149e7bcd65Smrg <tbody> 159e7bcd65Smrg <row> 169e7bcd65Smrg <entry>[ a ]</entry> 179e7bcd65Smrg <entry>Means either nothing or "a"</entry> 189e7bcd65Smrg </row> 199e7bcd65Smrg <row> 209e7bcd65Smrg <entry>{ a }</entry> 219e7bcd65Smrg <entry>Means zero or more occurrences of "a"</entry> 229e7bcd65Smrg </row> 239e7bcd65Smrg <row> 249e7bcd65Smrg <entry>( a | b )</entry> 259e7bcd65Smrg <entry>Means either "a" or "b"</entry> 269e7bcd65Smrg </row> 279e7bcd65Smrg <row> 289e7bcd65Smrg <entry>\\n</entry> 299e7bcd65Smrg <entry>Is the newline character</entry> 309e7bcd65Smrg </row> 319e7bcd65Smrg </tbody> 329e7bcd65Smrg </tgroup> 339e7bcd65Smrg</informaltable> 349e7bcd65Smrg 359e7bcd65Smrg<para> 369e7bcd65SmrgAll terminals are enclosed in double quotation marks (" "). 379e7bcd65SmrgInformal descriptions are enclosed in angle brackets (< >). 389e7bcd65SmrgSyntax 399e7bcd65Smrg</para> 409e7bcd65Smrg 419e7bcd65Smrg<para>The syntax of a translation table is</para> 429e7bcd65Smrg<informaltable frame='none'> 439e7bcd65Smrg <?dbfo keep-together="auto" ?> 449e7bcd65Smrg <tgroup cols='2' align='left' colsep='0' rowsep='0'> 459e7bcd65Smrg <colspec colwidth='0.2*' colname='c1'/> 469e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 479e7bcd65Smrg <tbody> 489e7bcd65Smrg <row> 499e7bcd65Smrg <entry>translationTable</entry> 509e7bcd65Smrg <entry>= [ directive ] { production }</entry> 519e7bcd65Smrg </row> 529e7bcd65Smrg <row> 539e7bcd65Smrg <entry>directive</entry> 549e7bcd65Smrg <entry>= ( "#replace" | "#override" | "#augment" ) "\\\\n"</entry> 559e7bcd65Smrg </row> 569e7bcd65Smrg <row> 579e7bcd65Smrg <entry>production</entry> 589e7bcd65Smrg <entry>= lhs ":" rhs "\\\\n"</entry> 599e7bcd65Smrg </row> 609e7bcd65Smrg <row> 619e7bcd65Smrg <entry>lhs</entry> 629e7bcd65Smrg <entry>= ( event | keyseq ) { "," (event | keyseq) }</entry> 639e7bcd65Smrg </row> 649e7bcd65Smrg <row> 659e7bcd65Smrg <entry>keyseq</entry> 669e7bcd65Smrg <entry>= """ keychar {keychar} """</entry> 679e7bcd65Smrg </row> 689e7bcd65Smrg <row> 699e7bcd65Smrg <entry>keychar</entry> 709e7bcd65Smrg <entry>= [ "^" | "$" | "\\\\" ] <ISO Latin 1 character></entry> 719e7bcd65Smrg </row> 729e7bcd65Smrg <row> 739e7bcd65Smrg <entry>event</entry> 749e7bcd65Smrg <entry>= [modifier_list] "<"event_type">" [ "(" count["+"] ")" ] {detail}</entry> 759e7bcd65Smrg </row> 769e7bcd65Smrg <row> 779e7bcd65Smrg <entry>modifier_list</entry> 789e7bcd65Smrg <entry>= ( ["!"] [":"] {modifier} ) | "None"</entry> 799e7bcd65Smrg </row> 809e7bcd65Smrg <row> 819e7bcd65Smrg <entry>modifier</entry> 829e7bcd65Smrg <entry>= ["~"] modifier_name</entry> 839e7bcd65Smrg </row> 849e7bcd65Smrg <row> 859e7bcd65Smrg <entry>count</entry> 869e7bcd65Smrg <entry>= ("1" | "2" | "3" | "4" | ...)</entry> 879e7bcd65Smrg </row> 889e7bcd65Smrg <row> 899e7bcd65Smrg <entry>modifier_name</entry> 909e7bcd65Smrg <entry>= "@" <keysym> | <see ModifierNames table below></entry> 919e7bcd65Smrg </row> 929e7bcd65Smrg <row> 939e7bcd65Smrg <entry>event_type</entry> 949e7bcd65Smrg <entry>= <see Event Types table below></entry> 959e7bcd65Smrg </row> 969e7bcd65Smrg <row> 979e7bcd65Smrg <entry>detail</entry> 989e7bcd65Smrg <entry>= <event specific details></entry> 999e7bcd65Smrg </row> 1009e7bcd65Smrg <row> 1019e7bcd65Smrg <entry>rhs</entry> 1029e7bcd65Smrg <entry>= { name "(" [params] ")" }</entry> 1039e7bcd65Smrg </row> 1049e7bcd65Smrg <row> 1059e7bcd65Smrg <entry>name</entry> 1069e7bcd65Smrg <entry>= namechar { namechar }</entry> 1079e7bcd65Smrg </row> 1089e7bcd65Smrg <row> 1099e7bcd65Smrg <entry>namechar</entry> 1109e7bcd65Smrg <entry>= { "a"-"z" | "A"-"Z" | "0"-"9" | "_" | "-" }</entry> 1119e7bcd65Smrg </row> 1129e7bcd65Smrg <row> 1139e7bcd65Smrg <entry>params</entry> 1149e7bcd65Smrg <entry>= string {"," string}</entry> 1159e7bcd65Smrg </row> 1169e7bcd65Smrg <row> 1179e7bcd65Smrg <entry>string</entry> 1189e7bcd65Smrg <entry>= quoted_string | unquoted_string</entry> 1199e7bcd65Smrg </row> 1209e7bcd65Smrg <row> 1219e7bcd65Smrg <entry>quoted_string</entry> 1229e7bcd65Smrg <entry>= <quote>"</quote> {<Latin 1 character> | escape_char} ["\\\\" ] <quote>"</quote></entry> 1239e7bcd65Smrg </row> 1249e7bcd65Smrg <row> 1259e7bcd65Smrg <entry>escape_char</entry> 1269e7bcd65Smrg <entry>= "\\""</entry> 1279e7bcd65Smrg </row> 1289e7bcd65Smrg <row> 1299e7bcd65Smrg <entry>unquoted_string</entry> 1309e7bcd65Smrg <entry>= {<Latin 1 character except space, tab, ",", "\\n", ")">}</entry> 1319e7bcd65Smrg </row> 1329e7bcd65Smrg </tbody> 1339e7bcd65Smrg </tgroup> 1349e7bcd65Smrg</informaltable> 1359e7bcd65Smrg 1369e7bcd65Smrg<para> 1379e7bcd65SmrgThe <emphasis remap='I'>params</emphasis> field is parsed into a list of 1389e7bcd65Smrg<function>String</function> 1399e7bcd65Smrgvalues that will be passed to the named action procedure. A 1409e7bcd65Smrg<emphasis remap='I'>quoted string</emphasis> may contain an embedded quotation mark if the 1419e7bcd65Smrgquotation mark is preceded by a single backslash (\). The 1429e7bcd65Smrgthree-character sequence "\\\"" is interpreted as "single backslash 1439e7bcd65Smrgfollowed by end-of-string". 1449e7bcd65Smrg</para> 1459e7bcd65Smrg<para><emphasis role='strong'>Modifier Names</emphasis></para> 1469e7bcd65Smrg 1479e7bcd65Smrg<para> 1489e7bcd65SmrgThe modifier field is used to specify standard X keyboard and button 1499e7bcd65Smrgmodifier mask bits. 1509e7bcd65SmrgModifiers are legal on event types 1519e7bcd65Smrg<function>KeyPress</function>, 1529e7bcd65Smrg<function>KeyRelease</function>, 1539e7bcd65Smrg<function>ButtonPress</function>, 1549e7bcd65Smrg<function>ButtonRelease</function>, 1559e7bcd65Smrg<function>MotionNotify</function>, 1569e7bcd65Smrg<function>EnterNotify</function>, 1579e7bcd65Smrg<function>LeaveNotify</function>, 1589e7bcd65Smrgand their abbreviations. 1599e7bcd65SmrgAn error is generated when a translation table 1609e7bcd65Smrgthat contains modifiers for any other events is parsed. 1619e7bcd65Smrg</para> 1629e7bcd65Smrg 1639e7bcd65Smrg<itemizedlist spacing='compact'> 1649e7bcd65Smrg <listitem> 1659e7bcd65Smrg <para> 1669e7bcd65SmrgIf the modifier list has no entries and is not "None", 1679e7bcd65Smrgit means "don't care" on all modifiers. 1689e7bcd65Smrg </para> 1699e7bcd65Smrg </listitem> 1709e7bcd65Smrg <listitem> 1719e7bcd65Smrg <para> 1729e7bcd65SmrgIf an exclamation point (!) is specified at the beginning 1739e7bcd65Smrgof the modifier list, 1749e7bcd65Smrgit means that the listed modifiers must be in the correct state 1759e7bcd65Smrgand no other modifiers can be asserted. 1769e7bcd65Smrg </para> 1779e7bcd65Smrg </listitem> 1789e7bcd65Smrg <listitem> 1799e7bcd65Smrg <para> 1809e7bcd65SmrgIf any modifiers are specified 1819e7bcd65Smrgand an exclamation point (!) is not specified, 1829e7bcd65Smrgit means that the listed modifiers must be in the 1839e7bcd65Smrgcorrect state and "don't care" about any other modifiers. 1849e7bcd65Smrg </para> 1859e7bcd65Smrg </listitem> 1869e7bcd65Smrg <listitem> 1879e7bcd65Smrg <para> 1889e7bcd65SmrgIf a modifier is preceded by a tilde (~), 1899e7bcd65Smrgit means that that modifier must not be asserted. 1909e7bcd65Smrg </para> 1919e7bcd65Smrg </listitem> 1929e7bcd65Smrg <listitem> 1939e7bcd65Smrg <para> 1949e7bcd65SmrgIf "None" is specified, it means no modifiers can be asserted. 1959e7bcd65Smrg </para> 1969e7bcd65Smrg </listitem> 1979e7bcd65Smrg <listitem> 1989e7bcd65Smrg <para> 1999e7bcd65SmrgIf a colon (:) is specified at the beginning of the modifier list, 2009e7bcd65Smrgit directs the Intrinsics to apply any standard modifiers in the 2019e7bcd65Smrgevent to map the event keycode into a KeySym. 2029e7bcd65SmrgThe default standard modifiers are Shift and Lock, 2039e7bcd65Smrgwith the interpretation as defined in <emphasis remap='I'>X Window 2049e7bcd65SmrgSystem Protocol</emphasis>, Section 5. 2059e7bcd65SmrgThe resulting KeySym must exactly match the specified 2069e7bcd65SmrgKeySym, and the nonstandard modifiers in the event must match the 2079e7bcd65Smrgmodifier list. 2089e7bcd65SmrgFor example, ":<Key>a" is distinct from ":<Key>A", 2099e7bcd65Smrgand ":Shift<Key>A" is distinct from ":<Key>A". 2109e7bcd65Smrg </para> 2119e7bcd65Smrg </listitem> 2129e7bcd65Smrg <listitem> 2139e7bcd65Smrg <para> 2149e7bcd65SmrgIf both an exclamation point (!) and a colon (:) are specified at 2159e7bcd65Smrgthe beginning of the modifier list, it means that the listed 2169e7bcd65Smrgmodifiers must be in the correct state and that no other modifiers 2179e7bcd65Smrgexcept the standard modifiers can be asserted. Any standard 2189e7bcd65Smrgmodifiers in the event are applied as for colon (:) above. 2199e7bcd65Smrg </para> 2209e7bcd65Smrg </listitem> 2219e7bcd65Smrg <listitem> 2229e7bcd65Smrg <para> 2239e7bcd65SmrgIf a colon (:) is not specified, 2249e7bcd65Smrgno standard modifiers are applied. 2259e7bcd65SmrgThen, for example, "<Key>A" and "<Key>a" are equivalent. 2269e7bcd65Smrg </para> 2279e7bcd65Smrg </listitem> 2289e7bcd65Smrg</itemizedlist> 2299e7bcd65Smrg 2309e7bcd65Smrg<para> 2319e7bcd65SmrgIn key sequences, 2329e7bcd65Smrga circumflex (^) is an abbreviation for the Control modifier, 2339e7bcd65Smrga dollar sign ($) is an abbreviation for Meta, 2349e7bcd65Smrgand a backslash (\) can be used to quote any 2359e7bcd65Smrgcharacter, in particular a double quote ("), a circumflex (^), 2369e7bcd65Smrga dollar sign ($), and another backslash (\). 2379e7bcd65SmrgBriefly: 2389e7bcd65Smrg</para> 2399e7bcd65Smrg 2409e7bcd65Smrg<literallayout > 2419e7bcd65SmrgNo modifiers: None <event> detail 2429e7bcd65SmrgAny modifiers: <event> detail 2439e7bcd65SmrgOnly these modifiers: ! mod1 mod2 <event> detail 2449e7bcd65SmrgThese modifiers and any others: mod1 mod2 <event> detail 2459e7bcd65Smrg</literallayout> 2469e7bcd65Smrg 2479e7bcd65Smrg<para> 2489e7bcd65SmrgThe use of "None" for a modifier list is identical to the use 2499e7bcd65Smrgof an exclamation point with no modifers. 2509e7bcd65Smrg</para> 2519e7bcd65Smrg 2529e7bcd65Smrg<informaltable frame='topbot'> 2539e7bcd65Smrg <?dbfo keep-together="auto" ?> 2549e7bcd65Smrg <tgroup cols='3' align='left' colsep='0' rowsep='0'> 2559e7bcd65Smrg <colspec colwidth='1.0*' colname='c1'/> 2569e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 2579e7bcd65Smrg <colspec colwidth='1.0*' colname='c3'/> 2589e7bcd65Smrg <thead> 2599e7bcd65Smrg <row rowsep='1'> 2609e7bcd65Smrg <entry>Modifier</entry> 2619e7bcd65Smrg <entry>Abbreviation</entry> 2629e7bcd65Smrg <entry>Meaning</entry> 2639e7bcd65Smrg </row> 2649e7bcd65Smrg </thead> 2659e7bcd65Smrg <tbody> 2669e7bcd65Smrg <row> 2679e7bcd65Smrg <entry>Ctrl</entry> 2689e7bcd65Smrg <entry>c</entry> 2699e7bcd65Smrg <entry>Control modifier bit</entry> 2709e7bcd65Smrg </row> 2719e7bcd65Smrg <row> 2729e7bcd65Smrg <entry>Shift</entry> 2739e7bcd65Smrg <entry>s</entry> 2749e7bcd65Smrg <entry>Shift modifier bit</entry> 2759e7bcd65Smrg </row> 2769e7bcd65Smrg <row> 2779e7bcd65Smrg <entry>Lock</entry> 2789e7bcd65Smrg <entry>l</entry> 2799e7bcd65Smrg <entry>Lock modifier bit</entry> 2809e7bcd65Smrg </row> 2819e7bcd65Smrg <row> 2829e7bcd65Smrg <entry>Meta</entry> 2839e7bcd65Smrg <entry>m</entry> 2849e7bcd65Smrg <entry>Meta key modifier</entry> 2859e7bcd65Smrg </row> 2869e7bcd65Smrg <row> 2879e7bcd65Smrg <entry>Hyper</entry> 2889e7bcd65Smrg <entry>h</entry> 2899e7bcd65Smrg <entry>Hyper key modifier</entry> 2909e7bcd65Smrg </row> 2919e7bcd65Smrg <row> 2929e7bcd65Smrg <entry>Super</entry> 2939e7bcd65Smrg <entry>su</entry> 2949e7bcd65Smrg <entry>Super key modifier</entry> 2959e7bcd65Smrg </row> 2969e7bcd65Smrg <row> 2979e7bcd65Smrg <entry>Alt</entry> 2989e7bcd65Smrg <entry>a</entry> 2999e7bcd65Smrg <entry>Alt key modifier</entry> 3009e7bcd65Smrg </row> 3019e7bcd65Smrg <row> 3029e7bcd65Smrg <entry>Mod1</entry> 3039e7bcd65Smrg <entry></entry> 3049e7bcd65Smrg <entry>Mod1 modifier bit</entry> 3059e7bcd65Smrg </row> 3069e7bcd65Smrg <row> 3079e7bcd65Smrg <entry>Mod2</entry> 3089e7bcd65Smrg <entry></entry> 3099e7bcd65Smrg <entry>Mod2 modifier bit</entry> 3109e7bcd65Smrg </row> 3119e7bcd65Smrg <row> 3129e7bcd65Smrg <entry>Mod3</entry> 3139e7bcd65Smrg <entry></entry> 3149e7bcd65Smrg <entry>Mod3 modifier bit</entry> 3159e7bcd65Smrg </row> 3169e7bcd65Smrg <row> 3179e7bcd65Smrg <entry>Mod4</entry> 3189e7bcd65Smrg <entry></entry> 3199e7bcd65Smrg <entry>Mod4 modifier bit</entry> 3209e7bcd65Smrg </row> 3219e7bcd65Smrg <row> 3229e7bcd65Smrg <entry>Mod5</entry> 3239e7bcd65Smrg <entry></entry> 3249e7bcd65Smrg <entry>Mod5 modifier bit</entry> 3259e7bcd65Smrg </row> 3269e7bcd65Smrg <row> 3279e7bcd65Smrg <entry>Button1</entry> 3289e7bcd65Smrg <entry></entry> 3299e7bcd65Smrg <entry>Button1 modifier bit</entry> 3309e7bcd65Smrg </row> 3319e7bcd65Smrg <row> 3329e7bcd65Smrg <entry>Button2</entry> 3339e7bcd65Smrg <entry></entry> 3349e7bcd65Smrg <entry>Button2 modifier bit</entry> 3359e7bcd65Smrg </row> 3369e7bcd65Smrg <row> 3379e7bcd65Smrg <entry>Button3</entry> 3389e7bcd65Smrg <entry></entry> 3399e7bcd65Smrg <entry>Button3 modifier bit</entry> 3409e7bcd65Smrg </row> 3419e7bcd65Smrg <row> 3429e7bcd65Smrg <entry>Button4</entry> 3439e7bcd65Smrg <entry></entry> 3449e7bcd65Smrg <entry>Button4 modifier bit</entry> 3459e7bcd65Smrg </row> 3469e7bcd65Smrg <row> 3479e7bcd65Smrg <entry>Button5</entry> 3489e7bcd65Smrg <entry></entry> 3499e7bcd65Smrg <entry>Button5 modifier bit</entry> 3509e7bcd65Smrg </row> 3519e7bcd65Smrg <row> 3529e7bcd65Smrg <entry>None</entry> 3539e7bcd65Smrg <entry></entry> 3549e7bcd65Smrg <entry>No modifiers</entry> 3559e7bcd65Smrg </row> 3569e7bcd65Smrg <row> 3579e7bcd65Smrg <entry>Any</entry> 3589e7bcd65Smrg <entry></entry> 3599e7bcd65Smrg <entry>Any modifier combination</entry> 3609e7bcd65Smrg </row> 3619e7bcd65Smrg </tbody> 3629e7bcd65Smrg </tgroup> 3639e7bcd65Smrg</informaltable> 3649e7bcd65Smrg 3659e7bcd65Smrg<para> 3669e7bcd65SmrgA key modifier is any modifier bit one of whose corresponding KeyCodes 3679e7bcd65Smrgcontains the corresponding left or right KeySym. 3689e7bcd65SmrgFor example, 3699e7bcd65Smrg"m" or "Meta" means any modifier bit mapping to a KeyCode 3709e7bcd65Smrgwhose KeySym list contains XK_Meta_L or XK_Meta_R. 3719e7bcd65SmrgNote that this interpretation is for each display, 3729e7bcd65Smrgnot global or even for each application context. 3739e7bcd65SmrgThe Control, Shift, and Lock modifier names refer 3749e7bcd65Smrgexplicitly to the corresponding modifier bits; 3759e7bcd65Smrgthere is no additional interpretation of KeySyms for these modifiers. 3769e7bcd65Smrg</para> 3779e7bcd65Smrg 3789e7bcd65Smrg<para> 3799e7bcd65SmrgBecause it is possible to associate arbitrary KeySyms with modifiers, the set of 3809e7bcd65Smrgkey modifiers is extensible. The "@" <keysym> syntax means any 3819e7bcd65Smrgmodifier bit whose corresponding KeyCode contains the specified KeySym name. 3829e7bcd65Smrg</para> 3839e7bcd65Smrg 3849e7bcd65Smrg<para> 3859e7bcd65SmrgA modifier_list/KeySym combination in a translation matches a 3869e7bcd65Smrgmodifiers/KeyCode combination in an event in the following ways: 3879e7bcd65Smrg</para> 3889e7bcd65Smrg 3899e7bcd65Smrg<orderedlist> 3909e7bcd65Smrg <listitem> 3919e7bcd65Smrg <para> 3929e7bcd65SmrgIf a colon (:) is used, the Intrinsics call the display's 3939e7bcd65Smrg<xref linkend='XtKeyProc' xrefstyle='select: title'/> 3949e7bcd65Smrgwith the KeyCode and modifiers. 3959e7bcd65SmrgTo match, (<emphasis remap='I'>modifiers</emphasis> & ~<emphasis remap='I'>modifiers_return</emphasis>) must equal <emphasis remap='I'>modifier_list</emphasis>, and 3969e7bcd65Smrg<emphasis remap='I'>keysym_return</emphasis> must equal the given KeySym. 3979e7bcd65Smrg </para> 3989e7bcd65Smrg </listitem> 3999e7bcd65Smrg <listitem> 4009e7bcd65Smrg <para> 4019e7bcd65SmrgIf (:) is not used, the Intrinsics mask off all don't-care bits from the 4029e7bcd65Smrgmodifiers. 4039e7bcd65SmrgThis value must be equal to <emphasis remap='I'>modifier_list</emphasis>. 4049e7bcd65SmrgThen, for each possible combination of 4059e7bcd65Smrgdon't-care modifiers in the modifier list, the Intrinsics call the display's 4069e7bcd65Smrg<xref linkend='XtKeyProc' xrefstyle='select: title'/> 4079e7bcd65Smrgwith the KeyCode and that combination ORed with the cared-about modifier bits 4089e7bcd65Smrgfrom the event. 4099e7bcd65Smrg<emphasis remap='I'>Keysym_return</emphasis> must match the KeySym in the translation. 4109e7bcd65Smrg </para> 4119e7bcd65Smrg </listitem> 4129e7bcd65Smrg</orderedlist> 4139e7bcd65Smrg 4149e7bcd65Smrg<para><emphasis role='strong'>Event Types</emphasis></para> 4159e7bcd65Smrg 4169e7bcd65Smrg<para> 4179e7bcd65SmrgThe event-type field describes XEvent types. 4189e7bcd65SmrgIn addition to the standard 4199e7bcd65SmrgXlib symbolic event type names, the following event type synonyms 4209e7bcd65Smrgare defined: 4219e7bcd65Smrg</para> 4229e7bcd65Smrg 4239e7bcd65Smrg<informaltable frame='topbot'> 4249e7bcd65Smrg <?dbfo keep-together="auto" ?> 4259e7bcd65Smrg <tgroup cols='2' align='left' colsep='0' rowsep='0'> 4269e7bcd65Smrg <colspec colwidth='1.0*' colname='c1'/> 4279e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 4289e7bcd65Smrg <thead> 4299e7bcd65Smrg <row rowsep='1'> 4309e7bcd65Smrg <entry>Type</entry> 4319e7bcd65Smrg <entry>Meaning</entry> 4329e7bcd65Smrg </row> 4339e7bcd65Smrg </thead> 4349e7bcd65Smrg <tbody> 4359e7bcd65Smrg <row> 4369e7bcd65Smrg <entry>Key</entry> 4379e7bcd65Smrg <entry><function>KeyPress</function></entry> 4389e7bcd65Smrg </row> 4399e7bcd65Smrg <row> 4409e7bcd65Smrg <entry>KeyDown</entry> 4419e7bcd65Smrg <entry><function>KeyPress</function></entry> 4429e7bcd65Smrg </row> 4439e7bcd65Smrg <row> 4449e7bcd65Smrg <entry>KeyUp</entry> 4459e7bcd65Smrg <entry><function>KeyRelease</function></entry> 4469e7bcd65Smrg </row> 4479e7bcd65Smrg <row> 4489e7bcd65Smrg <entry>BtnDown</entry> 4499e7bcd65Smrg <entry><function>ButtonPress</function></entry> 4509e7bcd65Smrg </row> 4519e7bcd65Smrg <row> 4529e7bcd65Smrg <entry>BtnUp</entry> 4539e7bcd65Smrg <entry><function>ButtonRelease</function></entry> 4549e7bcd65Smrg </row> 4559e7bcd65Smrg <row> 4569e7bcd65Smrg <entry>Motion</entry> 4579e7bcd65Smrg <entry><function>MotionNotify</function></entry> 4589e7bcd65Smrg </row> 4599e7bcd65Smrg <row> 4609e7bcd65Smrg <entry>PtrMoved</entry> 4619e7bcd65Smrg <entry><function>MotionNotify</function></entry> 4629e7bcd65Smrg </row> 4639e7bcd65Smrg <row> 4649e7bcd65Smrg <entry>MouseMoved</entry> 4659e7bcd65Smrg <entry><function>MotionNotify</function></entry> 4669e7bcd65Smrg </row> 4679e7bcd65Smrg <row> 4689e7bcd65Smrg <entry>Enter</entry> 4699e7bcd65Smrg <entry><function>EnterNotify</function></entry> 4709e7bcd65Smrg </row> 4719e7bcd65Smrg <row> 4729e7bcd65Smrg <entry>EnterWindow</entry> 4739e7bcd65Smrg <entry><function>EnterNotify</function></entry> 4749e7bcd65Smrg </row> 4759e7bcd65Smrg <row> 4769e7bcd65Smrg <entry>Leave</entry> 4779e7bcd65Smrg <entry><function>LeaveNotify</function></entry> 4789e7bcd65Smrg </row> 4799e7bcd65Smrg <row> 4809e7bcd65Smrg <entry>LeaveWindow</entry> 4819e7bcd65Smrg <entry><function>LeaveNotify</function></entry> 4829e7bcd65Smrg </row> 4839e7bcd65Smrg <row> 4849e7bcd65Smrg <entry>FocusIn</entry> 4859e7bcd65Smrg <entry><function>FocusIn</function></entry> 4869e7bcd65Smrg </row> 4879e7bcd65Smrg <row> 4889e7bcd65Smrg <entry>FocusOut</entry> 4899e7bcd65Smrg <entry><function>FocusOut</function></entry> 4909e7bcd65Smrg </row> 4919e7bcd65Smrg <row> 4929e7bcd65Smrg <entry>Keymap</entry> 4939e7bcd65Smrg <entry><function>KeymapNotify</function></entry> 4949e7bcd65Smrg </row> 4959e7bcd65Smrg <row> 4969e7bcd65Smrg <entry>Expose</entry> 4979e7bcd65Smrg <entry><function>Expose</function></entry> 4989e7bcd65Smrg </row> 4999e7bcd65Smrg <row> 5009e7bcd65Smrg <entry>GrExp</entry> 5019e7bcd65Smrg <entry><function>GraphicsExpose</function></entry> 5029e7bcd65Smrg </row> 5039e7bcd65Smrg <row> 5049e7bcd65Smrg <entry>NoExp</entry> 5059e7bcd65Smrg <entry><function>NoExpose</function></entry> 5069e7bcd65Smrg </row> 5079e7bcd65Smrg <row> 5089e7bcd65Smrg <entry>Visible</entry> 5099e7bcd65Smrg <entry><function>VisibilityNotify</function></entry> 5109e7bcd65Smrg </row> 5119e7bcd65Smrg <row> 5129e7bcd65Smrg <entry>Create</entry> 5139e7bcd65Smrg <entry><function>CreateNotify</function></entry> 5149e7bcd65Smrg </row> 5159e7bcd65Smrg <row> 5169e7bcd65Smrg <entry>Destroy</entry> 5179e7bcd65Smrg <entry><function>DestroyNotify</function></entry> 5189e7bcd65Smrg </row> 5199e7bcd65Smrg <row> 5209e7bcd65Smrg <entry>Unmap</entry> 5219e7bcd65Smrg <entry><function>UnmapNotify</function></entry> 5229e7bcd65Smrg </row> 5239e7bcd65Smrg <row> 5249e7bcd65Smrg <entry>Map</entry> 5259e7bcd65Smrg <entry><function>MapNotify</function></entry> 5269e7bcd65Smrg </row> 5279e7bcd65Smrg <row> 5289e7bcd65Smrg <entry>MapReq</entry> 5299e7bcd65Smrg <entry><function>MapRequest</function></entry> 5309e7bcd65Smrg </row> 5319e7bcd65Smrg <row> 5329e7bcd65Smrg <entry>Reparent</entry> 5339e7bcd65Smrg <entry><function>ReparentNotify</function></entry> 5349e7bcd65Smrg </row> 5359e7bcd65Smrg <row> 5369e7bcd65Smrg <entry>Configure</entry> 5379e7bcd65Smrg <entry><function>ConfigureNotify</function></entry> 5389e7bcd65Smrg </row> 5399e7bcd65Smrg <row> 5409e7bcd65Smrg <entry>ConfigureReq</entry> 5419e7bcd65Smrg <entry><function>ConfigureRequest</function></entry> 5429e7bcd65Smrg </row> 5439e7bcd65Smrg <row> 5449e7bcd65Smrg <entry>Grav</entry> 5459e7bcd65Smrg <entry><function>GravityNotify</function></entry> 5469e7bcd65Smrg </row> 5479e7bcd65Smrg <row> 5489e7bcd65Smrg <entry>ResReq</entry> 5499e7bcd65Smrg <entry><function>ResizeRequest</function></entry> 5509e7bcd65Smrg </row> 5519e7bcd65Smrg <row> 5529e7bcd65Smrg <entry>Circ</entry> 5539e7bcd65Smrg <entry><function>CirculateNotify</function></entry> 5549e7bcd65Smrg </row> 5559e7bcd65Smrg <row> 5569e7bcd65Smrg <entry>CircReq</entry> 5579e7bcd65Smrg <entry><function>CirculateRequest</function></entry> 5589e7bcd65Smrg </row> 5599e7bcd65Smrg <row> 5609e7bcd65Smrg <entry>Prop</entry> 5619e7bcd65Smrg <entry><function>PropertyNotify</function></entry> 5629e7bcd65Smrg </row> 5639e7bcd65Smrg <row> 5649e7bcd65Smrg <entry>SelClr</entry> 5659e7bcd65Smrg <entry><function>SelectionClear</function></entry> 5669e7bcd65Smrg </row> 5679e7bcd65Smrg <row> 5689e7bcd65Smrg <entry>SelReq</entry> 5699e7bcd65Smrg <entry><function>SelectionRequest</function></entry> 5709e7bcd65Smrg </row> 5719e7bcd65Smrg <row> 5729e7bcd65Smrg <entry>Select</entry> 5739e7bcd65Smrg <entry><function>SelectionNotify</function></entry> 5749e7bcd65Smrg </row> 5759e7bcd65Smrg <row> 5769e7bcd65Smrg <entry>Clrmap</entry> 5779e7bcd65Smrg <entry><function>ColormapNotify</function></entry> 5789e7bcd65Smrg </row> 5799e7bcd65Smrg <row> 5809e7bcd65Smrg <entry>Message</entry> 5819e7bcd65Smrg <entry><function>ClientMessage</function></entry> 5829e7bcd65Smrg </row> 5839e7bcd65Smrg <row> 5849e7bcd65Smrg <entry>Mapping</entry> 5859e7bcd65Smrg <entry><function>MappingNotify</function></entry> 5869e7bcd65Smrg </row> 5879e7bcd65Smrg </tbody> 5889e7bcd65Smrg </tgroup> 5899e7bcd65Smrg</informaltable> 5909e7bcd65Smrg 5919e7bcd65Smrg<para>The supported abbreviations are:</para> 5929e7bcd65Smrg 5939e7bcd65Smrg<informaltable frame='topbot'> 5949e7bcd65Smrg <?dbfo keep-together="auto" ?> 5959e7bcd65Smrg <tgroup cols='3' align='left' rowsep='0' colsep='0'> 5969e7bcd65Smrg <colspec colwidth='1.0*' colname='c1'/> 5979e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 5989e7bcd65Smrg <colspec colwidth='1.0*' colname='c3'/> 5999e7bcd65Smrg <thead> 6009e7bcd65Smrg <row rowsep='1'> 6019e7bcd65Smrg <entry>Abbreviation</entry> 6029e7bcd65Smrg <entry>Event Type</entry> 6039e7bcd65Smrg <entry>Including</entry> 6049e7bcd65Smrg </row> 6059e7bcd65Smrg </thead> 6069e7bcd65Smrg <tbody> 6079e7bcd65Smrg <row> 6089e7bcd65Smrg <entry>Ctrl</entry> 6099e7bcd65Smrg <entry><function>KeyPress</function></entry> 6109e7bcd65Smrg <entry>with Control modifier</entry> 6119e7bcd65Smrg </row> 6129e7bcd65Smrg <row> 6139e7bcd65Smrg <entry>Meta</entry> 6149e7bcd65Smrg <entry><function>KeyPress</function></entry> 6159e7bcd65Smrg <entry>with Meta modifier</entry> 6169e7bcd65Smrg </row> 6179e7bcd65Smrg <row> 6189e7bcd65Smrg <entry>Shift</entry> 6199e7bcd65Smrg <entry><function>KeyPress</function></entry> 6209e7bcd65Smrg <entry>with Shift modifier</entry> 6219e7bcd65Smrg </row> 6229e7bcd65Smrg <row> 6239e7bcd65Smrg <entry>Btn1Down</entry> 6249e7bcd65Smrg <entry><function>ButtonPress</function></entry> 6259e7bcd65Smrg <entry>with Button1 detail</entry> 6269e7bcd65Smrg </row> 6279e7bcd65Smrg <row> 6289e7bcd65Smrg <entry>Btn1Up</entry> 6299e7bcd65Smrg <entry><function>ButtonRelease</function></entry> 6309e7bcd65Smrg <entry>with Button1 detail</entry> 6319e7bcd65Smrg </row> 6329e7bcd65Smrg <row> 6339e7bcd65Smrg <entry>Btn2Down</entry> 6349e7bcd65Smrg <entry><function>ButtonPress</function></entry> 6359e7bcd65Smrg <entry>with Button2 detail</entry> 6369e7bcd65Smrg </row> 6379e7bcd65Smrg <row> 6389e7bcd65Smrg <entry>Btn2Up</entry> 6399e7bcd65Smrg <entry><function>ButtonRelease</function></entry> 6409e7bcd65Smrg <entry>with Button2 detail</entry> 6419e7bcd65Smrg </row> 6429e7bcd65Smrg <row> 6439e7bcd65Smrg <entry>Btn3Down</entry> 6449e7bcd65Smrg <entry><function>ButtonPress</function></entry> 6459e7bcd65Smrg <entry>with Button3 detail</entry> 6469e7bcd65Smrg </row> 6479e7bcd65Smrg <row> 6489e7bcd65Smrg <entry>Btn3Up</entry> 6499e7bcd65Smrg <entry><function>ButtonRelease</function></entry> 6509e7bcd65Smrg <entry>with Button3 detail</entry> 6519e7bcd65Smrg </row> 6529e7bcd65Smrg <row> 6539e7bcd65Smrg <entry>Btn4Down</entry> 6549e7bcd65Smrg <entry><function>ButtonPress</function></entry> 6559e7bcd65Smrg <entry>with Button4 detail</entry> 6569e7bcd65Smrg </row> 6579e7bcd65Smrg <row> 6589e7bcd65Smrg <entry>Btn4Up</entry> 6599e7bcd65Smrg <entry><function>ButtonRelease</function></entry> 6609e7bcd65Smrg <entry>with Button4 detail</entry> 6619e7bcd65Smrg </row> 6629e7bcd65Smrg <row> 6639e7bcd65Smrg <entry>Btn5Down</entry> 6649e7bcd65Smrg <entry><function>ButtonPress</function></entry> 6659e7bcd65Smrg <entry>with Button5 detail</entry> 6669e7bcd65Smrg </row> 6679e7bcd65Smrg <row> 6689e7bcd65Smrg <entry>Btn5Up</entry> 6699e7bcd65Smrg <entry><function>ButtonRelease</function></entry> 6709e7bcd65Smrg <entry>with Button5 detail</entry> 6719e7bcd65Smrg </row> 6729e7bcd65Smrg <row> 6739e7bcd65Smrg <entry>BtnMotion</entry> 6749e7bcd65Smrg <entry><function>MotionNotify</function></entry> 6759e7bcd65Smrg <entry>with any button modifier</entry> 6769e7bcd65Smrg </row> 6779e7bcd65Smrg <row> 6789e7bcd65Smrg <entry>Btn1Motion</entry> 6799e7bcd65Smrg <entry><function>MotionNotify</function></entry> 6809e7bcd65Smrg <entry>with Button1 modifier</entry> 6819e7bcd65Smrg </row> 6829e7bcd65Smrg <row> 6839e7bcd65Smrg <entry>Btn2Motion</entry> 6849e7bcd65Smrg <entry><function>MotionNotify</function></entry> 6859e7bcd65Smrg <entry>with Button2 modifier</entry> 6869e7bcd65Smrg </row> 6879e7bcd65Smrg <row> 6889e7bcd65Smrg <entry>Btn3Motion</entry> 6899e7bcd65Smrg <entry><function>MotionNotify</function></entry> 6909e7bcd65Smrg <entry>with Button3 modifier</entry> 6919e7bcd65Smrg </row> 6929e7bcd65Smrg <row> 6939e7bcd65Smrg <entry>Btn4Motion</entry> 6949e7bcd65Smrg <entry><function>MotionNotify</function></entry> 6959e7bcd65Smrg <entry>with Button4 modifier</entry> 6969e7bcd65Smrg </row> 6979e7bcd65Smrg <row> 6989e7bcd65Smrg <entry>Btn5Motion</entry> 6999e7bcd65Smrg <entry><function>MotionNotify</function></entry> 7009e7bcd65Smrg <entry>with Button5 modifier</entry> 7019e7bcd65Smrg </row> 7029e7bcd65Smrg </tbody> 7039e7bcd65Smrg </tgroup> 7049e7bcd65Smrg</informaltable> 7059e7bcd65Smrg 7069e7bcd65Smrg<para> 7079e7bcd65SmrgThe detail field is event-specific and normally corresponds to the 7089e7bcd65Smrgdetail field of the corresponding event as described 7099e7bcd65Smrgby <emphasis remap='I'>X Window System Protocol</emphasis>, Section 11. 7109e7bcd65SmrgThe detail field is supported for the following event types: 7119e7bcd65Smrg</para> 7129e7bcd65Smrg 7139e7bcd65Smrg<informaltable frame='none'> 7149e7bcd65Smrg <?dbfo keep-together="auto" ?> 7159e7bcd65Smrg <tgroup cols='2' align='left' rowsep='0' colsep='0'> 7169e7bcd65Smrg <colspec colwidth='0.5*' colname='c1'/> 7179e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 7189e7bcd65Smrg <tbody> 7199e7bcd65Smrg <row> 7209e7bcd65Smrg <entry>KeyPress</entry> 7219e7bcd65Smrg <entry>KeySym from event <emphasis>detail</emphasis> (keycode)</entry> 7229e7bcd65Smrg </row> 7239e7bcd65Smrg <row> 7249e7bcd65Smrg <entry>KeyRelease</entry> 7259e7bcd65Smrg <entry>KeySym from event <emphasis>detail</emphasis> (keycode)</entry> 7269e7bcd65Smrg </row> 7279e7bcd65Smrg <row> 7289e7bcd65Smrg <entry>ButtonPress</entry> 7299e7bcd65Smrg <entry>button from event <emphasis>detail</emphasis></entry> 7309e7bcd65Smrg </row> 7319e7bcd65Smrg <row> 7329e7bcd65Smrg <entry>ButtonRelease</entry> 7339e7bcd65Smrg <entry>button from event <emphasis>detail</emphasis></entry> 7349e7bcd65Smrg </row> 7359e7bcd65Smrg <row> 7369e7bcd65Smrg <entry>MotionNotify</entry> 7379e7bcd65Smrg <entry>event <emphasis>detail</emphasis></entry> 7389e7bcd65Smrg </row> 7399e7bcd65Smrg <row> 7409e7bcd65Smrg <entry>EnterNotify</entry> 7419e7bcd65Smrg <entry>event <emphasis>mode</emphasis></entry> 7429e7bcd65Smrg </row> 7439e7bcd65Smrg <row> 7449e7bcd65Smrg <entry>LeaveNotify</entry> 7459e7bcd65Smrg <entry>event <emphasis>mode</emphasis></entry> 7469e7bcd65Smrg </row> 7479e7bcd65Smrg <row> 7489e7bcd65Smrg <entry>FocusIn</entry> 7499e7bcd65Smrg <entry>event <emphasis>mode</emphasis></entry> 7509e7bcd65Smrg </row> 7519e7bcd65Smrg <row> 7529e7bcd65Smrg <entry>FocusOut</entry> 7539e7bcd65Smrg <entry>event <emphasis>mode</emphasis></entry> 7549e7bcd65Smrg </row> 7559e7bcd65Smrg <row> 7569e7bcd65Smrg <entry>PropertyNotify</entry> 7579e7bcd65Smrg <entry><emphasis>atom</emphasis></entry> 7589e7bcd65Smrg </row> 7599e7bcd65Smrg <row> 7609e7bcd65Smrg <entry>SelectionClear</entry> 7619e7bcd65Smrg <entry><emphasis>selection</emphasis></entry> 7629e7bcd65Smrg </row> 7639e7bcd65Smrg <row> 7649e7bcd65Smrg <entry>SelectionRequest</entry> 7659e7bcd65Smrg <entry><emphasis>selection</emphasis></entry> 7669e7bcd65Smrg </row> 7679e7bcd65Smrg <row> 7689e7bcd65Smrg <entry>SelectionNotify</entry> 7699e7bcd65Smrg <entry><emphasis>selection</emphasis></entry> 7709e7bcd65Smrg </row> 7719e7bcd65Smrg <row> 7729e7bcd65Smrg <entry>ClientMessage</entry> 7739e7bcd65Smrg <entry><emphasis>type</emphasis></entry> 7749e7bcd65Smrg </row> 7759e7bcd65Smrg <row> 7769e7bcd65Smrg <entry>MappingNotify</entry> 7779e7bcd65Smrg <entry><emphasis>request</emphasis></entry> 7789e7bcd65Smrg </row> 7799e7bcd65Smrg </tbody> 7809e7bcd65Smrg </tgroup> 7819e7bcd65Smrg</informaltable> 7829e7bcd65Smrg 7839e7bcd65Smrg<para> 7849e7bcd65SmrgIf the event type is 7859e7bcd65Smrg<function>KeyPress</function> 7869e7bcd65Smrgor 7879e7bcd65Smrg<function>KeyRelease</function>, 7889e7bcd65Smrgthe detail field 7899e7bcd65Smrgspecifies a KeySym name in standard format which is matched against 7909e7bcd65Smrgthe event as described above, for example, <Key>A. 7919e7bcd65Smrg</para> 7929e7bcd65Smrg 7939e7bcd65Smrg<para> 7949e7bcd65SmrgFor the 7959e7bcd65Smrg<function>PropertyNotify</function>, 7969e7bcd65Smrg<function>SelectionClear</function>, 7979e7bcd65Smrg<function>SelectionRequest</function>, 7989e7bcd65Smrg<function>SelectionNotify</function>, 7999e7bcd65Smrgand 8009e7bcd65Smrg<function>ClientMessage</function> 8019e7bcd65Smrgevents the detail field is specified 8029e7bcd65Smrgas an atom name; for example, <Message>WM_PROTOCOLS. For the 8039e7bcd65Smrg<function>MotionNotify</function>, 8049e7bcd65Smrg<function>EnterNotify</function>, 8059e7bcd65Smrg<function>LeaveNotify</function>, 8069e7bcd65Smrg<function>FocusIn</function>, 8079e7bcd65Smrg<function>FocusOut</function>, 8089e7bcd65Smrgand 8099e7bcd65Smrg<function>MappingNotify</function> 8109e7bcd65Smrgevents, either the symbolic constants as defined by 8119e7bcd65Smrg<emphasis remap='I'>X Window 8129e7bcd65SmrgSystem Protocol</emphasis>, Section 11, 8139e7bcd65Smrgor the numeric values may be specified. 8149e7bcd65Smrg</para> 8159e7bcd65Smrg 8169e7bcd65Smrg<para> 8179e7bcd65SmrgIf no detail field is specified, then any value in the event detail is 8189e7bcd65Smrgaccepted as a match. 8199e7bcd65Smrg</para> 8209e7bcd65Smrg 8219e7bcd65Smrg<para> 8229e7bcd65SmrgA KeySym can be specified as any of the standard KeySym names, 8239e7bcd65Smrga hexadecimal number prefixed with "0x" or "0X", 8249e7bcd65Smrgan octal number prefixed with "0", or a decimal number. 8259e7bcd65SmrgA KeySym expressed as a single digit is interpreted as the 8269e7bcd65Smrgcorresponding Latin 1 KeySym, for example, "0" is the KeySym XK_0. 8279e7bcd65SmrgOther single character KeySyms are treated as literal constants from Latin 1, 8289e7bcd65Smrgfor example, "!" is treated as 0x21. 8299e7bcd65SmrgStandard KeySym names are as defined in 8309e7bcd65Smrg<function><X11/keysymdef.h></function> 8319e7bcd65Smrgwith the "XK_" prefix removed. 8329e7bcd65Smrg</para> 8339e7bcd65Smrg 8349e7bcd65Smrg<para><emphasis role='strong'>Canonical Representation</emphasis></para> 8359e7bcd65Smrg 8369e7bcd65Smrg<para> 8379e7bcd65SmrgEvery translation table has a unique, canonical text representation. This 8389e7bcd65Smrgrepresentation is passed to a widget's 8399e7bcd65Smrg<function>display_accelerator</function> 8409e7bcd65Smrgprocedure to describe the accelerators installed on that widget. 8419e7bcd65SmrgThe canonical representation of a translation table is (see also 8429e7bcd65Smrg"Syntax") 8439e7bcd65Smrg</para> 8449e7bcd65Smrg 8459e7bcd65Smrg<informaltable frame='none'> 8469e7bcd65Smrg <?dbfo keep-together="auto" ?> 8479e7bcd65Smrg <tgroup cols='2' align='left' colsep='0' rowsep='0'> 8489e7bcd65Smrg <colspec colwidth='0.2*' colname='c1'/> 8499e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 8509e7bcd65Smrg <tbody> 8519e7bcd65Smrg <row> 8529e7bcd65Smrg <entry>translationTable</entry> 8539e7bcd65Smrg <entry>= { production } 8549e7bcd65Smrg </entry> 8559e7bcd65Smrg </row> 8569e7bcd65Smrg <row> 8579e7bcd65Smrg <entry>production</entry> 8589e7bcd65Smrg <entry>= lhs ":" rhs "\\n" 8599e7bcd65Smrg </entry> 8609e7bcd65Smrg </row> 8619e7bcd65Smrg <row> 8629e7bcd65Smrg <entry>lhs</entry> 8639e7bcd65Smrg <entry>=event { "," event } 8649e7bcd65Smrg </entry> 8659e7bcd65Smrg </row> 8669e7bcd65Smrg <row> 8679e7bcd65Smrg <entry>event</entry> 8689e7bcd65Smrg <entry>=[modifier_list] "<"event_type">" [ "(" count["+"] ")" ] {detail} 8699e7bcd65Smrg </entry> 8709e7bcd65Smrg </row> 8719e7bcd65Smrg <row> 8729e7bcd65Smrg <entry>modifier_list</entry> 8739e7bcd65Smrg <entry>= ["!"] [":"] {modifier} 8749e7bcd65Smrg </entry> 8759e7bcd65Smrg </row> 8769e7bcd65Smrg <row> 8779e7bcd65Smrg <entry>modifier</entry> 8789e7bcd65Smrg <entry>= ["˜"] modifier_name 8799e7bcd65Smrg </entry> 8809e7bcd65Smrg </row> 8819e7bcd65Smrg <row> 8829e7bcd65Smrg <entry>count</entry> 8839e7bcd65Smrg <entry>=("1" | "2" | "3" | "4" | ...) 8849e7bcd65Smrg </entry> 8859e7bcd65Smrg </row> 8869e7bcd65Smrg <row> 8879e7bcd65Smrg <entry>modifier_name</entry> 8889e7bcd65Smrg <entry>= "@" <keysym> | <see canonical modifier names below> 8899e7bcd65Smrg </entry> 8909e7bcd65Smrg </row> 8919e7bcd65Smrg <row> 8929e7bcd65Smrg <entry>event_type</entry> 8939e7bcd65Smrg <entry>= <see canonical event types below> 8949e7bcd65Smrg </entry> 8959e7bcd65Smrg </row> 8969e7bcd65Smrg <row> 8979e7bcd65Smrg <entry>detail</entry> 8989e7bcd65Smrg <entry>=<event-specific details> 8999e7bcd65Smrg </entry> 9009e7bcd65Smrg </row> 9019e7bcd65Smrg <row> 9029e7bcd65Smrg <entry>rhs</entry> 9039e7bcd65Smrg <entry>={ name "(" [params] ")" } 9049e7bcd65Smrg </entry> 9059e7bcd65Smrg </row> 9069e7bcd65Smrg <row> 9079e7bcd65Smrg <entry>name</entry> 9089e7bcd65Smrg <entry>=namechar { namechar } 9099e7bcd65Smrg </entry> 9109e7bcd65Smrg </row> 9119e7bcd65Smrg <row> 9129e7bcd65Smrg <entry>namechar</entry> 9139e7bcd65Smrg <entry>= { "a"-"z" | "A"-"Z" | "0"-"9" | "_" | "-" } 9149e7bcd65Smrg </entry> 9159e7bcd65Smrg </row> 9169e7bcd65Smrg <row> 9179e7bcd65Smrg <entry>params</entry> 9189e7bcd65Smrg <entry>=string {"," string} 9199e7bcd65Smrg </entry> 9209e7bcd65Smrg </row> 9219e7bcd65Smrg <row> 9229e7bcd65Smrg <entry>string</entry> 9239e7bcd65Smrg <entry>=quoted_string 9249e7bcd65Smrg </entry> 9259e7bcd65Smrg </row> 9269e7bcd65Smrg <row> 9279e7bcd65Smrg <entry>quoted_string</entry> 9289e7bcd65Smrg <entry>= <quote>"</quote> {<Latin 1 character> | escape_char} ["\\\\" ] <quote>"</quote> 9299e7bcd65Smrg </entry> 9309e7bcd65Smrg </row> 9319e7bcd65Smrg <row> 9329e7bcd65Smrg <entry>escape_char</entry> 9339e7bcd65Smrg <entry>= "\\"" 9349e7bcd65Smrg </entry> 9359e7bcd65Smrg </row> 9369e7bcd65Smrg </tbody> 9379e7bcd65Smrg </tgroup> 9389e7bcd65Smrg</informaltable> 9399e7bcd65Smrg 9409e7bcd65Smrg<para>The canonical modifier names are</para> 9419e7bcd65Smrg 9429e7bcd65Smrg<literallayout > 9439e7bcd65Smrg Ctrl Mod1 Button1 9449e7bcd65Smrg Shift Mod2 Button2 9459e7bcd65Smrg Lock Mod3 Button3 9469e7bcd65Smrg Mod4 Button4 9479e7bcd65Smrg Mod5 Button5 9489e7bcd65Smrg</literallayout> 9499e7bcd65Smrg 9509e7bcd65Smrg<para>The canonical event types are</para> 9519e7bcd65Smrg 9529e7bcd65Smrg<informaltable frame='none'> 9539e7bcd65Smrg <?dbfo keep-together="auto" ?> 9549e7bcd65Smrg <tgroup cols='2' align='left' colsep='0' rowsep='0'> 9559e7bcd65Smrg <colspec colwidth='1.0*' colname='c1'/> 9569e7bcd65Smrg <colspec colwidth='1.0*' colname='c2'/> 9579e7bcd65Smrg <tbody> 9589e7bcd65Smrg <row> 9599e7bcd65Smrg <entry>KeyPress</entry> 9609e7bcd65Smrg <entry>KeyRelease</entry> 9619e7bcd65Smrg </row> 9629e7bcd65Smrg <row> 9639e7bcd65Smrg <entry>ButtonPress</entry> 9649e7bcd65Smrg <entry>ButtonRelease</entry> 9659e7bcd65Smrg </row> 9669e7bcd65Smrg <row> 9679e7bcd65Smrg <entry>MotionNotify</entry> 9689e7bcd65Smrg <entry>EnterNotify</entry> 9699e7bcd65Smrg </row> 9709e7bcd65Smrg <row> 9719e7bcd65Smrg <entry>LeaveNotify</entry> 9729e7bcd65Smrg <entry>FocusIn</entry> 9739e7bcd65Smrg </row> 9749e7bcd65Smrg <row> 9759e7bcd65Smrg <entry>FocusOut</entry> 9769e7bcd65Smrg <entry>KeymapNotify</entry> 9779e7bcd65Smrg </row> 9789e7bcd65Smrg <row> 9799e7bcd65Smrg <entry>Expose</entry> 9809e7bcd65Smrg <entry>GraphicsExpose,</entry> 9819e7bcd65Smrg </row> 9829e7bcd65Smrg <row> 9839e7bcd65Smrg <entry>NoExpose</entry> 9849e7bcd65Smrg <entry>VisibilityNotify</entry> 9859e7bcd65Smrg </row> 9869e7bcd65Smrg <row> 9879e7bcd65Smrg <entry>CreateNotify</entry> 9889e7bcd65Smrg <entry>DestroyNotify</entry> 9899e7bcd65Smrg </row> 9909e7bcd65Smrg <row> 9919e7bcd65Smrg <entry>UnmapNotify</entry> 9929e7bcd65Smrg <entry>MapNotify</entry> 9939e7bcd65Smrg </row> 9949e7bcd65Smrg <row> 9959e7bcd65Smrg <entry>MapRequest</entry> 9969e7bcd65Smrg <entry>ReparentNotify</entry> 9979e7bcd65Smrg </row> 9989e7bcd65Smrg <row> 9999e7bcd65Smrg <entry>ConfigureNotify</entry> 10009e7bcd65Smrg <entry>ConfigureRequest</entry> 10019e7bcd65Smrg </row> 10029e7bcd65Smrg <row> 10039e7bcd65Smrg <entry>GravityNotify</entry> 10049e7bcd65Smrg <entry>ResizeRequest</entry> 10059e7bcd65Smrg </row> 10069e7bcd65Smrg <row> 10079e7bcd65Smrg <entry>CirculateNotify</entry> 10089e7bcd65Smrg <entry>CirculateRequest</entry> 10099e7bcd65Smrg </row> 10109e7bcd65Smrg <row> 10119e7bcd65Smrg <entry>PropertyNotify</entry> 10129e7bcd65Smrg <entry>SelectionClear</entry> 10139e7bcd65Smrg </row> 10149e7bcd65Smrg <row> 10159e7bcd65Smrg <entry>SelectionRequest</entry> 10169e7bcd65Smrg <entry>SelectionNotify</entry> 10179e7bcd65Smrg </row> 10189e7bcd65Smrg <row> 10199e7bcd65Smrg <entry>ColormapNotify</entry> 10209e7bcd65Smrg <entry>ClientMessage</entry> 10219e7bcd65Smrg </row> 10229e7bcd65Smrg </tbody> 10239e7bcd65Smrg </tgroup> 10249e7bcd65Smrg</informaltable> 10259e7bcd65Smrg 10269e7bcd65Smrg<para><emphasis role='strong'>Examples</emphasis></para> 10279e7bcd65Smrg 10289e7bcd65Smrg<itemizedlist spacing='compact'> 10299e7bcd65Smrg <listitem> 10309e7bcd65Smrg <para> 10319e7bcd65SmrgAlways put more specific events in the table before more general ones: 10329e7bcd65Smrg </para> 10339e7bcd65Smrg<literallayout > 10349e7bcd65Smrg Shift <Btn1Down> : twas()\n\ 10359e7bcd65Smrg <Btn1Down> : brillig() 10369e7bcd65Smrg</literallayout> 10379e7bcd65Smrg </listitem> 10389e7bcd65Smrg <listitem> 10399e7bcd65Smrg <para> 10409e7bcd65SmrgFor double-click on Button1 Up with Shift, use this specification: 10419e7bcd65Smrg </para> 10429e7bcd65Smrg <literallayout > 10439e7bcd65SmrgShift<Btn1Up>(2) : and() 10449e7bcd65Smrg</literallayout> 10459e7bcd65Smrg </listitem> 10469e7bcd65Smrg <listitem> 10479e7bcd65Smrg <para> 10489e7bcd65SmrgThis is equivalent to the following line with appropriate timers set 10499e7bcd65Smrgbetween events: 10509e7bcd65Smrg </para> 10519e7bcd65Smrg <literallayout > 10529e7bcd65SmrgShift<Btn1Down>,Shift<Btn1Up>,Shift<Btn1Down>,Shift<Btn1Up> : and() 10539e7bcd65Smrg</literallayout> 10549e7bcd65Smrg </listitem> 10559e7bcd65Smrg <listitem> 10569e7bcd65Smrg <para> 10579e7bcd65SmrgFor double-click on Button1 Down with Shift, use this specification: 10589e7bcd65Smrg </para> 10599e7bcd65Smrg <literallayout > 10609e7bcd65SmrgShift<Btn1Down>(2) : the() 10619e7bcd65Smrg</literallayout> 10629e7bcd65Smrg </listitem> 10639e7bcd65Smrg <listitem> 10649e7bcd65Smrg <para> 10659e7bcd65SmrgThis is equivalent to the following line with appropriate timers set 10669e7bcd65Smrgbetween events: 10679e7bcd65Smrg </para> 10689e7bcd65Smrg <literallayout > 10699e7bcd65SmrgShift<Btn1Down>,Shift<Btn1Up>,Shift<Btn1Down> : the() 10709e7bcd65Smrg</literallayout> 10719e7bcd65Smrg </listitem> 10729e7bcd65Smrg <listitem> 10739e7bcd65Smrg <para> 10749e7bcd65SmrgMouse motion is always discarded when it occurs between events in a table 10759e7bcd65Smrgwhere no motion event is specified: 10769e7bcd65Smrg </para> 10779e7bcd65Smrg <literallayout > 10789e7bcd65Smrg<Btn1Down>,<Btn1Up> : slithy() 10799e7bcd65Smrg</literallayout> 10809e7bcd65Smrg <para> 10819e7bcd65SmrgThis is taken, even if the pointer moves a bit between the down and 10829e7bcd65Smrgup events. 10839e7bcd65SmrgSimilarly, any motion event specified in a translation matches any number 10849e7bcd65Smrgof motion events. 10859e7bcd65SmrgIf the motion event causes an action procedure to be invoked, 10869e7bcd65Smrgthe procedure is invoked after each motion event. 10879e7bcd65Smrg </para> 10889e7bcd65Smrg </listitem> 10899e7bcd65Smrg <listitem> 10909e7bcd65Smrg <para> 10919e7bcd65SmrgIf an event sequence consists of a sequence of events that is also a 10929e7bcd65Smrgnoninitial subsequence of another translation, 10939e7bcd65Smrgit is not taken if it occurs in the context of the longer sequence. 10949e7bcd65SmrgThis occurs mostly in sequences like the following: 10959e7bcd65Smrg </para> 10969e7bcd65Smrg <literallayout > 10979e7bcd65Smrg<Btn1Down>,<Btn1Up> : toves()\n\ 10989e7bcd65Smrg<Btn1Up> : did() 10999e7bcd65Smrg</literallayout> 11009e7bcd65Smrg <para> 11019e7bcd65SmrgThe second translation is taken only if the button release is not 11029e7bcd65Smrgpreceded by a button press or if there are intervening events between the 11039e7bcd65Smrgpress and the release. 11049e7bcd65SmrgBe particularly aware of this when using the repeat notation, above, 11059e7bcd65Smrgwith buttons and keys, 11069e7bcd65Smrgbecause their expansion includes additional events; 11079e7bcd65Smrgand when specifying motion events, because they are implicitly included 11089e7bcd65Smrgbetween any two other events. 11099e7bcd65SmrgIn particular, 11109e7bcd65Smrgpointer motion and double-click translations cannot coexist in the same 11119e7bcd65Smrgtranslation table. 11129e7bcd65Smrg </para> 11139e7bcd65Smrg </listitem> 11149e7bcd65Smrg <listitem> 11159e7bcd65Smrg <para> 11169e7bcd65SmrgFor single click on Button1 Up with Shift and Meta, use this specification: 11179e7bcd65Smrg </para> 11189e7bcd65Smrg </listitem> 11199e7bcd65Smrg <listitem> 11209e7bcd65Smrg <literallayout > 11219e7bcd65SmrgShift Meta <Btn1Down>, Shift Meta<Btn1Up>: gyre() 11229e7bcd65Smrg</literallayout> 11239e7bcd65Smrg </listitem> 11249e7bcd65Smrg <listitem> 11259e7bcd65Smrg <para> 11269e7bcd65SmrgFor multiple clicks greater or equal to a minimum number, 11279e7bcd65Smrga plus sign (+) may be appended to the final (rightmost) 11289e7bcd65Smrgcount in an event sequence. The actions will be invoked 11299e7bcd65Smrgon the <emphasis remap='I'>count</emphasis>-th click and each subsequent one arriving 11309e7bcd65Smrgwithin the multi-click time interval. For example: 11319e7bcd65Smrg </para> 11329e7bcd65Smrg <literallayout > 11339e7bcd65SmrgShift <Btn1Up>(2+) : and() 11349e7bcd65Smrg</literallayout> 11359e7bcd65Smrg </listitem> 11369e7bcd65Smrg <listitem> 11379e7bcd65Smrg <para> 11389e7bcd65SmrgTo indicate 11399e7bcd65Smrg<function>EnterNotify</function> 11409e7bcd65Smrgwith any modifiers, use this specification: 11419e7bcd65Smrg </para> 11429e7bcd65Smrg <literallayout > 11439e7bcd65Smrg<Enter> : gimble() 11449e7bcd65Smrg</literallayout> 11459e7bcd65Smrg </listitem> 11469e7bcd65Smrg <listitem> 11479e7bcd65Smrg <para> 11489e7bcd65SmrgTo indicate 11499e7bcd65Smrg<function>EnterNotify</function> 11509e7bcd65Smrgwith no modifiers, use this specification: 11519e7bcd65Smrg </para> 11529e7bcd65Smrg <literallayout > 11539e7bcd65SmrgNone <Enter> : in() 11549e7bcd65Smrg</literallayout> 11559e7bcd65Smrg </listitem> 11569e7bcd65Smrg <listitem> 11579e7bcd65Smrg <para> 11589e7bcd65SmrgTo indicate 11599e7bcd65Smrg<function>EnterNotify</function> 11609e7bcd65Smrgwith Button1 Down and Button2 Up and "don't care" about 11619e7bcd65Smrgthe other modifiers, use this specification: 11629e7bcd65Smrg </para> 11639e7bcd65Smrg <literallayout > 11649e7bcd65SmrgButton1 ~Button2 <Enter> : the() 11659e7bcd65Smrg</literallayout> 11669e7bcd65Smrg </listitem> 11679e7bcd65Smrg <listitem> 11689e7bcd65Smrg <para> 11699e7bcd65SmrgTo indicate 11709e7bcd65Smrg<function>EnterNotify</function> 11719e7bcd65Smrgwith Button1 down and Button2 down exclusively, use this specification: 11729e7bcd65Smrg </para> 11739e7bcd65Smrg <literallayout > 11749e7bcd65Smrg! Button1 Button2 <Enter> : wabe() 11759e7bcd65Smrg</literallayout> 11769e7bcd65Smrg <para> 11779e7bcd65SmrgYou do not need to use a tilde (~) with an exclamation point (!). 11789e7bcd65Smrg </para> 11799e7bcd65Smrg </listitem> 11809e7bcd65Smrg</itemizedlist> 11819e7bcd65Smrg</appendix> 1182