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