aboutsummaryrefslogtreecommitdiff
path: root/libXt/specs/appB
diff options
context:
space:
mode:
Diffstat (limited to 'libXt/specs/appB')
-rw-r--r--libXt/specs/appB783
1 files changed, 783 insertions, 0 deletions
diff --git a/libXt/specs/appB b/libXt/specs/appB
new file mode 100644
index 000000000..3eb9ccc7b
--- /dev/null
+++ b/libXt/specs/appB
@@ -0,0 +1,783 @@
+.\" $Xorg: appB,v 1.3 2000/08/17 19:42:48 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix B\fP\s-1
+
+\s+1\fBTranslation Table Syntax\fP\s-1
+.sp 2
+.LP
+.XS
+\fBAppendix B \(em Translation Table Syntax\fP
+.XE
+.IN "Translation tables"
+.SH
+Notation
+.LP
+Syntax is specified in EBNF notation with the following conventions:
+.TS
+l l.
+[ a ] Means either nothing or ``a''
+{ a } Means zero or more occurrences of ``a''
+( a | b ) Means either ``a'' or ``b''
+\\\\n Is the newline character
+.TE
+.LP
+All terminals are enclosed in double quotation marks (`` '').
+Informal descriptions are enclosed in angle brackets (< >).
+.SH
+Syntax
+.LP
+The syntax of a translation table is
+.TS
+l l .
+translationTable = [ directive ] { production }
+directive = ( ``#replace'' | ``#override'' | ``#augment'' ) ``\\\\n''
+production = lhs ``:'' rhs ``\\\\n''
+lhs = ( event | keyseq ) { ``,'' (event | keyseq) }
+keyseq = ``"'' keychar {keychar} ``"''
+keychar = [ ``^'' | ``$'' | ``\\\\'' ] <ISO Latin 1 character>
+event = [modifier_list] ``<''event_type``>'' [ ``('' count[``+''] ``)'' ] {detail}
+modifier_list = ( [``!''] [``:''] {modifier} ) | ``None''
+modifier = [``~''] modifier_name
+count = (``1'' | ``2'' | ``3'' | ``4'' | ...)
+modifier_name = ``@'' <keysym> | <see ModifierNames table below>
+event_type = <see Event Types table below>
+detail = <event specific details>
+rhs = { name ``('' [params] ``)'' }
+name = namechar { namechar }
+namechar = { ``a''-``z'' | ``A''-``Z'' | ``0''-``9'' | ``_'' | ``-'' }
+params = string {``,'' string}
+string = quoted_string | unquoted_string
+quoted_string = ``"'' {<Latin 1 character> | escape_char} [``\\\\\\\\'' ] ``"''
+escape_char = ``\\\\"''
+unquoted_string = {<Latin 1 character except space, tab, ``,'', ``\\\\n'', ``)''>}
+.TE
+
+.LP
+The \fIparams\fP field is parsed into a list of
+.PN String
+values that will be passed to the named action procedure. A
+\fIquoted string\fP may contain an embedded quotation mark if the
+quotation mark is preceded by a single backslash (\\). The
+three-character sequence ``\\\\"'' is interpreted as ``single backslash
+followed by end-of-string''.
+
+.SH
+Modifier Names
+.LP
+The modifier field is used to specify standard X keyboard and button
+modifier mask bits.
+Modifiers are legal on event types
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN MotionNotify ,
+.PN EnterNotify ,
+.PN LeaveNotify ,
+and their abbreviations.
+An error is generated when a translation table
+that contains modifiers for any other events is parsed.
+.IP \(bu 5
+If the modifier list has no entries and is not ``None'',
+it means ``don't care'' on all modifiers.
+.IP \(bu 5
+If an exclamation point (!) is specified at the beginning
+of the modifier list,
+it means that the listed modifiers must be in the correct state
+and no other modifiers can be asserted.
+.IP \(bu 5
+If any modifiers are specified
+and an exclamation point (!) is not specified,
+it means that the listed modifiers must be in the
+correct state and ``don't care'' about any other modifiers.
+.IP \(bu 5
+If a modifier is preceded by a tilde (~),
+it means that that modifier must not be asserted.
+.IP \(bu 5
+If ``None'' is specified, it means no modifiers can be asserted.
+.IP \(bu 5
+If a colon (:) is specified at the beginning of the modifier list,
+it directs the \*(xI to apply any standard modifiers in the
+event to map the event keycode into a KeySym.
+The default standard modifiers are Shift and Lock,
+with the interpretation as defined in \fI\*(xP\fP, Section 5.
+The resulting KeySym must exactly match the specified
+KeySym, and the nonstandard modifiers in the event must match the
+modifier list.
+For example, ``:<Key>a'' is distinct from ``:<Key>A'',
+and ``:Shift<Key>A'' is distinct from ``:<Key>A''.
+.IP \(bu 5
+If both an exclamation point (!) and a colon (:) are specified at
+the beginning of the modifier list, it means that the listed
+modifiers must be in the correct state and that no other modifiers
+except the standard modifiers can be asserted. Any standard
+modifiers in the event are applied as for colon (:) above.
+.IP \(bu 5
+If a colon (:) is not specified,
+no standard modifiers are applied.
+Then, for example, ``<Key>A'' and ``<Key>a'' are equivalent.
+.LP
+In key sequences,
+a circumflex (^) is an abbreviation for the Control modifier,
+a dollar sign ($) is an abbreviation for Meta,
+and a backslash (\\) can be used to quote any
+character, in particular a double quote ("), a circumflex (^),
+a dollar sign ($), and another backslash (\\).
+Briefly:
+.LP
+.Ds 0
+.TA 2.5i
+.ta 2.5i
+No modifiers: None <event> detail
+Any modifiers: <event> detail
+Only these modifiers: ! mod1 mod2 <event> detail
+These modifiers and any others: mod1 mod2 <event> detail
+.De
+.LP
+The use of ``None'' for a modifier list is identical to the use
+of an exclamation point with no modifers.
+.LP
+.TS H
+lw(1i) lw(1i) lw(3i).
+_
+.sp 6p
+Modifier Abbreviation Meaning
+.sp 6p
+_
+.sp 6p
+.R
+.TH
+Ctrl c Control modifier bit
+Shift s Shift modifier bit
+Lock l Lock modifier bit
+Meta m Meta key modifier
+Hyper h Hyper key modifier
+Super su Super key modifier
+Alt a Alt key modifier
+Mod1 Mod1 modifier bit
+Mod2 Mod2 modifier bit
+Mod3 Mod3 modifier bit
+Mod4 Mod4 modifier bit
+Mod5 Mod5 modifier bit
+Button1 Button1 modifier bit
+Button2 Button2 modifier bit
+Button3 Button3 modifier bit
+Button4 Button4 modifier bit
+Button5 Button5 modifier bit
+None No modifiers
+Any Any modifier combination
+.sp 6p
+_
+.TE
+.LP
+.IN "key modifier"
+A key modifier is any modifier bit one of whose corresponding KeyCodes
+contains the corresponding left or right KeySym.
+For example,
+``m'' or ``Meta'' means any modifier bit mapping to a KeyCode
+whose KeySym list contains XK_Meta_L or XK_Meta_R.
+Note that this interpretation is for each display,
+not global or even for each application context.
+The Control, Shift, and Lock modifier names refer
+explicitly to the corresponding modifier bits;
+there is no additional interpretation of KeySyms for these modifiers.
+.LP
+Because it is possible to associate arbitrary KeySyms with modifiers, the set of
+key modifiers is extensible. The ``@'' <keysym> syntax means any
+modifier bit whose corresponding KeyCode contains the specified KeySym name.
+.LP
+A modifier_list/KeySym combination in a translation matches a
+modifiers/KeyCode combination in an event in the following ways:
+.IP 1. 5
+If a colon (:) is used, the \*(xI call the display's
+.PN XtKeyProc
+with the KeyCode and modifiers.
+To match, (\fImodifiers\fP & ~\fImodifiers_return\fP) must equal \fImodifier_list\fP, and
+\fIkeysym_return\fP must equal the given KeySym.
+.IP 2. 5
+If (:) is not used, the \*(xI mask off all don't-care bits from the
+modifiers.
+This value must be equal to \fImodifier_list\fP.
+Then, for each possible combination of
+don't-care modifiers in the modifier list, the \*(xI call the display's
+.PN XtKeyProc
+with the KeyCode and that combination ORed with the cared-about modifier bits
+from the event.
+\fIKeysym_return\fP must match the KeySym in the translation.
+.SH
+Event Types
+.LP
+The event-type field describes XEvent types.
+In addition to the standard
+Xlib symbolic event type names, the following event type synonyms
+are defined:
+.TS H
+lw(1.5i) lw(3i).
+_
+.sp 6p
+Type Meaning
+.sp 6p
+_
+.sp 6p
+.TH
+Key T{
+.PN KeyPress
+T}
+KeyDown T{
+.PN KeyPress
+T}
+KeyUp T{
+.PN KeyRelease
+T}
+BtnDown T{
+.PN ButtonPress
+T}
+BtnUp T{
+.PN ButtonRelease
+T}
+Motion T{
+.PN MotionNotify
+T}
+PtrMoved T{
+.PN MotionNotify
+T}
+MouseMoved T{
+.PN MotionNotify
+T}
+Enter T{
+.PN EnterNotify
+T}
+EnterWindow T{
+.PN EnterNotify
+T}
+Leave T{
+.PN LeaveNotify
+T}
+LeaveWindow T{
+.PN LeaveNotify
+T}
+FocusIn T{
+.PN FocusIn
+T}
+FocusOut T{
+.PN FocusOut
+T}
+Keymap T{
+.PN KeymapNotify
+T}
+Expose T{
+.PN Expose
+T}
+GrExp T{
+.PN GraphicsExpose
+T}
+NoExp T{
+.PN NoExpose
+T}
+Visible T{
+.PN VisibilityNotify
+T}
+Create T{
+.PN CreateNotify
+T}
+Destroy T{
+.PN DestroyNotify
+T}
+Unmap T{
+.PN UnmapNotify
+T}
+Map T{
+.PN MapNotify
+T}
+MapReq T{
+.PN MapRequest
+T}
+Reparent T{
+.PN ReparentNotify
+T}
+Configure T{
+.PN ConfigureNotify
+T}
+ConfigureReq T{
+.PN ConfigureRequest
+T}
+Grav T{
+.PN GravityNotify
+T}
+ResReq T{
+.PN ResizeRequest
+T}
+Circ T{
+.PN CirculateNotify
+T}
+CircReq T{
+.PN CirculateRequest
+T}
+Prop T{
+.PN PropertyNotify
+T}
+SelClr T{
+.PN SelectionClear
+T}
+SelReq T{
+.PN SelectionRequest
+T}
+Select T{
+.PN SelectionNotify
+T}
+Clrmap T{
+.PN ColormapNotify
+T}
+Message T{
+.PN ClientMessage
+T}
+Mapping T{
+.PN MappingNotify
+T}
+.sp 6p
+_
+.TE
+The supported abbreviations are:
+.TS H
+lw(1.5i) lw(1.25i) lw(1.75i).
+_
+.sp 6p
+Abbreviation Event Type Including
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Ctrl T{
+.PN KeyPress
+T} with Control modifier
+Meta T{
+.PN KeyPress
+T} with Meta modifier
+Shift T{
+.PN KeyPress
+T} with Shift modifier
+Btn1Down T{
+.PN ButtonPress
+T} with Button1 detail
+Btn1Up T{
+.PN ButtonRelease
+T} with Button1 detail
+Btn2Down T{
+.PN ButtonPress
+T} with Button2 detail
+Btn2Up T{
+.PN ButtonRelease
+T} with Button2 detail
+Btn3Down T{
+.PN ButtonPress
+T} with Button3 detail
+Btn3Up T{
+.PN ButtonRelease
+T} with Button3 detail
+Btn4Down T{
+.PN ButtonPress
+T} with Button4 detail
+Btn4Up T{
+.PN ButtonRelease
+T} with Button4 detail
+Btn5Down T{
+.PN ButtonPress
+T} with Button5 detail
+Btn5Up T{
+.PN ButtonRelease
+T} with Button5 detail
+BtnMotion T{
+.PN MotionNotify
+T} with any button modifier
+Btn1Motion T{
+.PN MotionNotify
+T} with Button1 modifier
+Btn2Motion T{
+.PN MotionNotify
+T} with Button2 modifier
+Btn3Motion T{
+.PN MotionNotify
+T} with Button3 modifier
+Btn4Motion T{
+.PN MotionNotify
+T} with Button4 modifier
+Btn5Motion T{
+.PN MotionNotify
+T} with Button5 modifier
+.sp 6p
+_
+.TE
+.sp
+.LP
+The detail field is event-specific and normally corresponds to the
+detail field of the corresponding event as described
+by \fI\*(xP\fP, Section 11. The detail field is supported
+for the following event types:
+.LP
+.TS H
+l l .
+_
+.sp 6p
+Event Event Field
+.sp 6p
+_
+.TH
+.sp 6p
+KeyPress KeySym from event \fIdetail\fP (keycode)
+KeyRelease KeySym from event \fIdetail\fP (keycode)
+ButtonPress button from event \fIdetail\fP
+ButtonRelease button from event \fIdetail\fP
+MotionNotify event \fIdetail\fP
+EnterNotify event \fImode\fP
+LeaveNotify event \fImode\fP
+FocusIn event \fImode\fP
+FocusOut event \fImode\fP
+PropertyNotify \fIatom\fP
+SelectionClear \fIselection\fP
+SelectionRequest \fIselection\fP
+SelectionNotify \fIselection\fP
+ClientMessage \fItype\fP
+MappingNotify \fIrequest\fP
+.sp 6p
+_
+.TE
+.LP
+If the event type is
+.PN KeyPress
+or
+.PN KeyRelease ,
+the detail field
+specifies a KeySym name in standard format which is matched against
+the event as described above, for example, <Key>A.
+.LP
+For the
+.PN PropertyNotify ,
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+and
+.PN ClientMessage
+events the detail field is specified
+as an atom name; for example, <Message>WM_PROTOCOLS. For the
+.PN MotionNotify ,
+.PN EnterNotify ,
+.PN LeaveNotify ,
+.PN FocusIn ,
+.PN FocusOut ,
+and
+.PN MappingNotify
+events, either the symbolic constants as defined by
+\fI\*(xP\fP, Section 11,
+or the numeric values may be specified.
+.LP
+If no detail field is specified, then any value in the event detail is
+accepted as a match.
+.LP
+A KeySym can be specified as any of the standard KeySym names,
+a hexadecimal number prefixed with ``0x'' or ``0X'',
+an octal number prefixed with ``0'', or a decimal number.
+A KeySym expressed as a single digit is interpreted as the
+corresponding Latin 1 KeySym, for example, ``0'' is the KeySym XK_0.
+Other single character KeySyms are treated as literal constants from Latin 1,
+for example, ``!'' is treated as 0x21.
+Standard KeySym names are as defined in
+.Pn < X11/keysymdef.h >
+with the ``XK_'' prefix removed.
+.LP
+.SH
+Canonical Representation
+.LP
+Every translation table has a unique, canonical text representation. This
+representation is passed to a widget's
+.PN display_accelerator
+procedure to describe the accelerators installed on that widget.
+The canonical representation of a translation table is (see also
+``Syntax'')
+.TS
+l l .
+translationTable = { production }
+production = lhs ``:'' rhs ``\\\\n''
+lhs = event { ``,'' event }
+event = [modifier_list] ``<''event_type``>'' [ ``('' count[``+''] ``)'' ] {detail}
+modifier_list = [``!''] [``:''] {modifier}
+modifier = [``~''] modifier_name
+count = (``1'' | ``2'' | ``3'' | ``4'' | ...)
+modifier_name = ``@'' <keysym> | <see canonical modifier names below>
+event_type = <see canonical event types below>
+detail = <event-specific details>
+rhs = { name ``('' [params] ``)'' }
+name = namechar { namechar }
+namechar = { ``a''-``z'' | ``A''-``Z'' | ``0''-``9'' | ``_'' | ``-'' }
+params = string {``,'' string}
+string = quoted_string
+quoted_string = ``"'' {<Latin 1 character> | escape_char} [``\\\\\\\\'' ] ``"''
+escape_char = ``\\\\"''
+.TE
+.LP
+The canonical modifier names are
+.LP
+.Ds
+.TA 1i 2.5i
+.ta 1i 2.5i
+Ctrl Mod1 Button1
+Shift Mod2 Button2
+Lock Mod3 Button3
+ Mod4 Button4
+ Mod5 Button5
+.De
+.LP
+The canonical event types are
+.IP
+.TS
+l l.
+T{
+.PN KeyPress
+T} T{
+.PN KeyRelease
+T}
+T{
+.PN ButtonPress
+T} T{
+.PN ButtonRelease
+T}
+T{
+.PN MotionNotify
+T} T{
+.PN EnterNotify
+T}
+T{
+.PN LeaveNotify
+T} T{
+.PN FocusIn
+T}
+T{
+.PN FocusOut
+T} T{
+.PN KeymapNotify
+T}
+T{
+.PN Expose
+T} T{
+.PN GraphicsExpose,
+T}
+T{
+.PN NoExpose
+T} T{
+.PN VisibilityNotify
+T}
+T{
+.PN CreateNotify
+T} T{
+.PN DestroyNotify
+T}
+T{
+.PN UnmapNotify
+T} T{
+.PN MapNotify
+T}
+T{
+.PN MapRequest
+T} T{
+.PN ReparentNotify
+T}
+T{
+.PN ConfigureNotify
+T} T{
+.PN ConfigureRequest
+T}
+T{
+.PN GravityNotify
+T} T{
+.PN ResizeRequest
+T}
+T{
+.PN CirculateNotify
+T} T{
+.PN CirculateRequest
+T}
+T{
+.PN PropertyNotify
+T} T{
+.PN SelectionClear
+T}
+T{
+.PN SelectionRequest
+T} T{
+.PN SelectionNotify
+T}
+T{
+.PN ColormapNotify
+T} T{
+.PN ClientMessage
+T}
+.TE
+.LP
+
+.SH
+Examples
+.LP
+.IP \(bu 5
+Always put more specific events in the table before more general ones:
+.LP
+.Ds
+Shift <Btn1Down> : twas()\\n\\
+<Btn1Down> : brillig()
+.De
+.LP
+.IP \(bu 5
+For double-click on Button1 Up with Shift, use this specification:
+.IP
+.Ds
+Shift<Btn1Up>(2) : and()
+.DE
+.IP
+This is equivalent to the following line with appropriate timers set
+between events:
+.IP
+.Ds
+Shift<Btn1Down>,Shift<Btn1Up>,Shift<Btn1Down>,Shift<Btn1Up> : and()
+.De
+.IP \(bu 5
+For double-click on Button1 Down with Shift, use this specification:
+.IP
+.Ds
+Shift<Btn1Down>(2) : the()
+.De
+.IP
+This is equivalent to the following line with appropriate timers set
+between events:
+.IP
+.Ds
+Shift<Btn1Down>,Shift<Btn1Up>,Shift<Btn1Down> : the()
+.De
+.IP \(bu 5
+Mouse motion is always discarded when it occurs between events in a table
+where no motion event is specified:
+.IP
+.Ds
+<Btn1Down>,<Btn1Up> : slithy()
+.De
+.IP
+This is taken, even if the pointer moves a bit between the down and
+up events.
+Similarly, any motion event specified in a translation matches any number
+of motion events.
+If the motion event causes an action procedure to be invoked,
+the procedure is invoked after each motion event.
+.IP \(bu 5
+If an event sequence consists of a sequence of events that is also a
+noninitial subsequence of another translation,
+it is not taken if it occurs in the context of the longer sequence.
+This occurs mostly in sequences like the following:
+.IP
+.Ds
+<Btn1Down>,<Btn1Up> : toves()\\n\\
+<Btn1Up> : did()
+.De
+.IP
+The second translation is taken only if the button release is not
+preceded by a button press or if there are intervening events between the
+press and the release.
+Be particularly aware of this when using the repeat notation, above,
+with buttons and keys,
+because their expansion includes additional events;
+and when specifying motion events, because they are implicitly included
+between any two other events.
+In particular,
+pointer motion and double-click translations cannot coexist in the same
+translation table.
+.IP \(bu 5
+For single click on Button1 Up with Shift and Meta, use this specification:
+.IP
+.Ds
+Shift Meta <Btn1Down>, Shift Meta<Btn1Up>: gyre()
+.De
+.IP \(bu 5
+For multiple clicks greater or equal to a minimum number,
+a plus sign (+) may be appended to the final (rightmost)
+count in an event sequence. The actions will be invoked
+on the \fIcount\fP-th click and each subsequent one arriving
+within the multi-click time interval. For example:
+.IP
+.Ds
+Shift <Btn1Up>(2+) : and()
+.De
+.IP \(bu 5
+To indicate
+.PN EnterNotify
+with any modifiers, use this specification:
+.IP
+.Ds
+<Enter> : gimble()
+.De
+.IP \(bu 5
+To indicate
+.PN EnterNotify
+with no modifiers, use this specification:
+.IP
+.Ds
+None <Enter> : in()
+.De
+.IP \(bu 5
+To indicate
+.PN EnterNotify
+with Button1 Down and Button2 Up and ``don't care'' about
+the other modifiers, use this specification:
+.IP
+.Ds
+Button1 ~Button2 <Enter> : the()
+.De
+.IP \(bu 5
+To indicate
+.PN EnterNotify
+with Button1 down and Button2 down exclusively, use this specification:
+.IP
+.Ds
+! Button1 Button2 <Enter> : wabe()
+.De
+.IP
+You do not need to use a tilde (~) with an exclamation point (!).