libXi-1.7.1.901/ 0000775 0032045 0000764 00000000000 12162670017 010111 5 0000000 0000000 libXi-1.7.1.901/specs/ 0000775 0032045 0000764 00000000000 12162670017 011226 5 0000000 0000000 libXi-1.7.1.901/specs/encoding.xml 0000664 0032045 0000764 00000140051 11673753274 013474 0000000 0000000
Input Extension Protocol Encoding
Syntactic Conventions
All numbers are in decimal,
unless prefixed with #x, in which case they are in hexadecimal (base 16).
The general syntax used to describe requests, replies, errors, events, and
compound types is:
NameofThing
encode-form
...
encode-form
Each encode-form describes a single component.
For components described in the protocol as:
name: TYPE
the encode-form is:
N TYPE name
N is the number of bytes occupied in the data stream,
and TYPE is the interpretation of those bytes.
For example,
depth: CARD8
becomes:
1 CARD8 depth
For components with a static numeric value the encode-form is:
N value name
The value is always interpreted as an N-byte unsigned integer.
For example,
the first two bytes of a Window error are always zero (indicating an
error in general) and three (indicating the Window error in particular):
1 0 Error
1 3 code
For components described in the protocol as:
name: {Name1, ..., NameI}
the encode-form is:
N name
value1 Name1
...
valueI NameI
The value is always interpreted as an N-byte unsigned integer.
Note that the size of N is sometimes larger than that strictly required
to encode the values.
For example:
class: {InputOutput, InputOnly, CopyFromParent}
becomes:
2 class
0 CopyFromParent
1 InputOutput
2 InputOnly
For components described in the protocol as:
NAME: TYPE or Alternative1 ... or AlternativeI
the encode-form is:
N TYPE NAME
value1 Alternative1
...
valueI AlternativeI
The alternative values are guaranteed not to conflict with the encoding
of TYPE.
For example:
destination: WINDOW or PointerWindow or InputFocus
becomes:
4 WINDOW destination
0 PointerWindow
1 InputFocus
For components described in the protocol as:
value-mask: BITMASK
the encode-form is:
N BITMASK value-mask
mask1 mask-name1
...
maskI mask-nameI
The individual bits in the mask are specified and named,
and N is 2 or 4.
The most-significant bit in a BITMASK is reserved for use in defining
chained (multiword) bitmasks, as extensions augment existing core requests.
The precise interpretation of this bit is not yet defined here,
although a probable mechanism is that a 1-bit indicates that another N bytes
of bitmask follows, with bits within the overall mask still interpreted
from least-significant to most-significant with an N-byte unit, with N-byte units
interpreted in stream order, and with the overall mask being byte-swapped
in individual N-byte units.
For LISTofVALUE encodings, the request is followed by a section of the form:
VALUEs
encode-form
...
encode-form
listing an encode-form for each VALUE.
The NAME in each encode-form keys to the corresponding BITMASK bit.
The encoding of a VALUE always occupies four bytes,
but the number of bytes specified in the encoding-form indicates how
many of the least-significant bytes are actually used;
the remaining bytes are unused and their values do not matter.
In various cases, the number of bytes occupied by a component will be specified
by a lowercase single-letter variable name instead of a specific numeric
value, and often some other component will have its value specified as a
simple numeric expression involving these variables.
Components specified with such expressions are always interpreted
as unsigned integers.
The scope of such variables is always just the enclosing request, reply,
error, event, or compound type structure.
For example:
2 3+n request length
4n LISTofPOINT points
For unused bytes (the values of the bytes are undefined and do not matter),
the encode-form is:
N unused
If the number of unused bytes is variable, the encode-form typically is:
p unused, p=pad(E)
where E is some expression,
and pad(E) is the number of bytes needed to round E up to a multiple of four.
pad(E) = (4 - (E mod 4)) mod 4
Common Types
LISTofFOO
In this document the LISTof notation strictly means some number of repetitions
of the FOO encoding;
the actual length of the list is encoded elsewhere.
SETofFOO
A set is always represented by a bitmask, with a 1-bit indicating presence in
the set.
BITMASK: CARD32
WINDOW: CARD32
BYTE: 8-bit value
INT8: 8-bit signed integer
INT16: 16-bit signed integer
INT32: 32-bit signed integer
CARD8: 8-bit unsigned integer
CARD16: 16-bit unsigned integer
CARD32: 32-bit unsigned integer
TIMESTAMP: CARD32
EVENTCLASS: CARD32
INPUTCLASS
0 KeyClass
1 ButtonClass
2 ValuatorClass
3 FeedbackClass
4 ProximityClass
5 FocusClass
6 OtherClass
INPUTCLASS
0 KbdFeedbackClass
1 PtrFeedbackClass
2 StringFeedbackClass
3 IntegerFeedbackClass
4 LedFeedbackClass
5 BellFeedbackClass
INPUTINFO
0 KEYINFO
1 BUTTONINFO
2 VALUATORINFO
DEVICEMODE
0 Relative
1 Absolute
PROXIMITYSTATE
0 InProximity
1 OutOfProximity
BOOL
0 False
1 True
KEYSYM: CARD32
KEYCODE: CARD8
BUTTON: CARD8
SETofKEYBUTMASK
#x0001 Shift
#x0002 Lock
#x0004 Control
#x0008 Mod1
#x0010 Mod2
#x0020 Mod3
#x0040 Mod4
#x0080 Mod5
#x0100 Button1
#x0200 Button2
#x0400 Button3
#x0800 Button4
#x1000 Button5
#xe000 unused but must be zero
SETofKEYMASK
encodings are the same as for SETofKEYBUTMASK, except with
#xff00 unused but must be zero
STRING8: LISTofCARD8
STR
1 n length of name in bytes
n STRING8 name
Errors
Request
1 0 Error
1 1 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Value
1 0 Error
1 2 code
2 CARD16 sequence number
4 <32-bits> bad value
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Window
1 0 Error
1 3 code
2 CARD16 sequence number
4 CARD32 bad resource id
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Match
1 0 Error
1 8 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Access
1 0 Error
1 10 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Alloc
1 0 Error
1 11 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Name
1 0 Error
1 15 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Device
1 0 Error
1 CARD8 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Event
1 0 Error
1 CARD8 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Mode
1 0 Error
1 CARD8 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Class
1 0 Error
1 CARD8 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
Keyboards
KEYCODE values are always greater than 7 (and less than 256).
KEYSYM values with the bit #x10000000 set are reserved as vendor-specific.
The names and encodings of the standard KEYSYM values are contained in
appendix F.
Pointers
BUTTON values are numbered starting with one.
Requests
GetExtensionVersion
1 CARD8 input extension opcode
1 1 GetExtensionVersion opcode
2 2+(n+p)/4 request length
2 n length of name
2 unused
n STRING8 name
p unused, p=pad(n)
=>
1 1 Reply
1 1 GetExtensionVersion opcode
2 CARD16 sequence number
4 0 reply length
2 CARD16 major version
2 CARD16 minor version
1 BOOL present
19 unused
ListInputDevices
1 CARD8 input extension opcode
1 2 ListInputDevices opcode
2 1 request length
=>
1 1 Reply
1 2 ListInputDevices opcode
2 CARD16 sequence number
4 (n+p)/4 reply length
1 CARD8 number of input devices
23 unused
n LISTofDEVICEINFO info for each input device
p unused, p=pad(n)
DEVICEINFO
4 CARD32 device type
1 CARD8 device id
1 CARD8 number of input classes this device reports
1 CARD8 device use
0 IsXPointer
1 IsXKeyboard
2 IsXExtensionDevice
1 unused
n LISTofINPUTINFO input info for each input class
m STR name
p unused, p=pad(m)
INPUTINFO KEYINFO or BUTTONINFO or VALUATORINFO
KEYINFO
1 0 class id
1 8 length
1 KEYCODE minimum keycode
1 KEYCODE maximum keycode
2 CARD16 number of keys
2 unused
BUTTONINFO
1 1 class id
1 4 length
2 CARD16 number of buttons
VALUATORINFO
1 2 class id
1 8+12n length
1 n number of axes
1 SETofDEVICEMODE mode
4 CARD32 size of motion buffer
12n LISTofAXISINFO valuator limits
AXISINFO
4 CARD32 resolution
4 CARD32 minimum value
4 CARD32 maximum value
OpenDevice
1 CARD8 input extension opcode
1 3 OpenDevice opcode
2 2 request length
1 CARD8 device id
3 unused
=>
1 1 Reply
1 3 OpenDevice opcode
2 CARD16 sequence number
4 (n+p)/4 reply length
1 CARD8 number of input classes
23 unused
n LISTofINPUTCLASSINFO input class information
p unused, p=pad(n)
INPUTCLASSINFO
1 CARD8 input class id
0 KEY
1 BUTTON
2 VALUATOR
3 FEEDBACK
4 PROXIMITY
5 FOCUS
6 OTHER
1 CARD8 event type base code for this class
CloseDevice
1 CARD8 input extension opcode
1 4 CloseDevice opcode
2 2 request length
1 CARD8 device id
3 unused
SetDeviceMode
1 CARD8 input extension opcode
1 5 SetDeviceMode opcode
2 2 request length
1 CARD8 device id
1 CARD8 mode
2 unused
=>
1 1 Reply
1 5 SetDeviceMode opcode
2 CARD16 sequence number
4 0 reply length
1 CARD8 status
0 Success
1 AlreadyGrabbed
3 + first_error DeviceBusy
23 unused
SelectExtensionEvent
1 CARD8 input extension opcode
1 6 SelectExtensionEvent opcode
2 3+n request length
4 Window event window
2 CARD16 count
2 unused
4n LISTofEVENTCLASS desired events
GetSelectedExtensionEvents
1 CARD8 input extension opcode
1 7 GetSelectedExtensionEvents opcode
2 2 request length
4 Window event window
=>
1 1 Reply
1 7 GetSelecteExtensionEvents opcode
2 CARD16 sequence number
4 n + m reply length
2 n this client count
2 m all clients count
20 unused
4n LISTofEVENTCLASS this client list
4m LISTofEVENTCLASS all clients list
ChangeDeviceDontPropagateList
1 CARD8 input extension opcode
1 8 ChangeDeviceDontPropagateList opcode
2 3+n request length
4 Window event window
2 n count of events
1 mode
0 AddToList
1 DeleteFromList
1 unused
4n LISTofEVENTCLASS desired events
GetDeviceDontPropagateList
1 CARD8 input extension opcode
1 9 GetDeviceDontPropagateList opcode
2 2 request length
4 Window event window
=>
1 1 Reply
1 9 GetDeviceDontPropagateList opcode
2 CARD16 sequence number
4 n reply length
2 n count of events
22 unused
4n LISTofEVENTCLASS don't propagate list
GetDeviceMotionEvents
1 CARD8 input extension opcode
1 10 GetDeviceMotionEvents opcode
2 4 request length
4 TIMESTAMP start
0 CurrentTime
4 TIMESTAMP stop
0 CurrentTime
1 CARD8 device id
3 unused
=>
1 1 Reply
1 10 GetDeviceMotionEvents opcode
2 CARD16 sequence number
4 (m+1)n reply length
4 n number of DEVICETIMECOORDs in events
1 m number of valuators per event
1 CARD8 mode of the device
0 Absolute
1 Relative
18 unused
(4m+4)n LISTofDEVICETIMECOORD events
DEVICETIMECOORD
4 TIMESTAMP time
4m LISTofINT32 valuators
ChangeKeyboardDevice
1 CARD8 input extension opcode
1 11 ChangeKeyboardDevice opcode
2 2 request length
1 CARD8 device id
3 unused
=>
1 1 Reply
1 11 ChangeKeyboardDevice opcode
2 CARD16 sequence number
4 0 reply length
1 status
0 Success
1 AlreadyGrabbed
2 DeviceFrozen
23 unused
ChangePointerDevice
1 CARD8 input extension opcode
1 12 ChangePointerDevice opcode
2 2 request length
1 CARD8 x-axis
1 CARD8 y-axis
1 CARD8 device id
1 unused
=>
1 1 Reply
1 12 ChangePointerDevice opcode
2 CARD16 sequence number
4 0 reply length
1 status
0 Success
1 AlreadyGrabbed
2 DeviceFrozen
23 unused
GrabDevice
1 CARD8 input extension opcode
1 13 GrabDevice opcode
2 5+n request length
4 WINDOW grab-window
4 TIMESTAMP time
0 CurrentTime
2 n count of events
1 this-device-mode
0 Synchronous
1 Asynchronous
1 other-devices-mode
0 Synchronous
1 Asynchronous
1 BOOL owner-events
1 CARD8 device id
2 unused
4n LISTofEVENTCLASS event list
=>
1 1 Reply
1 13 GrabDevice opcode
2 CARD16 sequence number
4 0 reply length
1 status
0 Success
1 AlreadyGrabbed
2 InvalidTime
3 NotViewable
4 Frozen
23 unused
UngrabDevice
1 CARD8 input extension opcode
1 14 UngrabDevice opcode
2 3 request length
4 TIMESTAMP time
0 CurrentTime
1 CARD8 device id
3 unused
GrabDeviceKey
1 CARD8 input extension opcode
1 15 GrabDeviceKey opcode
2 5+n request length
4 WINDOW grab-window
2 n count of events
2 SETofKEYMASK modifiers
#x8000 AnyModifier
1 CARD8 modifier device
#x0FF UseXKeyboard
1 CARD8 grabbed device
1 KEYCODE key
0 AnyKey
1 this-device-mode
0 Synchronous
1 Asynchronous
1 other-devices-mode
0 Synchronous
1 Asynchronous
1 BOOL owner-events
2 unused
4n LISTofEVENTCLASS event list
UngrabDeviceKey
1 CARD8 input extension opcode
1 16 UngrabDeviceKey opcode
2 4 request length
4 WINDOW grab-window
2 SETofKEYMASK modifiers
#x8000 AnyModifier
1 CARD8 modifier device
#x0FF UseXKeyboard
1 KEYCODE key
0 AnyKey
1 CARD8 grabbed device
3 unused
GrabDeviceButton
1 CARD8 input extension opcode
1 17 GrabDeviceButton opcode
2 5+n request length
4 WINDOW grab-window
1 CARD8 grabbed device
1 CARD8 modifier device
#x0FF UseXKeyboard
2 n count of desired events
2 SETofKEYMASK modifiers
1 this-device-mode
0 Synchronous
1 Asynchronous
1 other-device-mode
0 Synchronous
1 Asynchronous
1 BUTTON button
0 AnyButton
1 BOOL owner-events
#x8000 AnyModifier
2 unused
4n LISTofEVENTCLASS event list
UngrabDeviceButton
1 CARD8 input extension opcode
1 18 UngrabDeviceButton opcode
2 4 request length
4 WINDOW grab-window
2 SETofKEYMASK modifiers
#x8000 AnyModifier
1 CARD8 modifier device
#x0FF UseXKeyboard
1 BUTTON button
0 AnyButton
1 CARD8 grabbed device
3 unused
AllowDeviceEvents
1 CARD8 input extension opcode
1 19 AllowDeviceEvents opcode
2 3 request length
4 TIMESTAMP time
0 CurrentTime
1 mode
0 AsyncThisDevice
1 SyncThisDevice
2 ReplayThisDevice
3 AsyncOtherDevices
4 AsyncAll
5 SyncAll
1 CARD8 device id
2 unused
GetDeviceFocus
1 CARD8 input extension opcode
1 20 GetDeviceFocus opcode
2 2 request length
1 CARD8 device
3 unused
=>
1 1 Reply
1 20 GetDeviceFocus opcode
2 CARD16 sequence number
4 0 reply length
4 WINDOW focus
0 None
1 PointerRoot
3 FollowKeyboard
4 TIMESTAMP focus time
1 revert-to
0 None
1 PointerRoot
2 Parent
3 FollowKeyboard
15 unused
SetDeviceFocus
1 CARD8 input extension opcode
1 21 SetDeviceFocus opcode
2 4 request length
4 WINDOW focus
0 None
1 PointerRoot
3 FollowKeyboard
4 TIMESTAMP time
0 CurrentTime
1 revert-to
0 None
1 PointerRoot
2 Parent
3 FollowKeyboard
1 CARD8 device
2 unused
GetFeedbackControl
1 CARD8 input extension opcode
1 22 GetFeedbackControl opcode
2 2 request length
1 CARD8 device id
3 unused
=>
1 1 Reply
1 22 GetFeedbackControl opcode
2 CARD16 sequence number
4 m/4 reply length
2 n number of feedbacks supported
22 unused
m LISTofFEEDBACKSTATE feedbacks
FEEDBACKSTATE KBDFEEDBACKSTATE, PTRFEEDBACKSTATE, INTEGERFEEDBACKSTATE,
STRINGFEEDBACKSTATE, BELLFEEDBACKSTATE, or LEDFEEDBACKSTATE
KBDFEEDBACKSTATE
1 0 feedback class id
1 CARD8 id of this feedback
2 20 length
2 CARD16 pitch
2 CARD16 duration
4 CARD32 led_mask
4 CARD32 led_values
1 global_auto_repeat
0 Off
1 On
1 CARD8 click
1 CARD8 percent
1 unused
32 LISTofCARD8 auto_repeats
PTRFEEDBACKSTATE
1 0 feedback class id
1 CARD8 id of this feedback
2 12 length
2 unused
2 CARD16 acceleration-numerator
2 CARD16 acceleration-denominator
2 CARD16 threshold
INTEGERFEEDBACKSTATE
1 0 feedback class id
1 CARD8 id of this feedback
2 16 length
4 CARD32 resolution
4 INT32 minimum value
4 INT32 maximum value
STRINGFEEDBACKSTATE
1 1 feedback class id
1 CARD8 id of this feedback
2 4n+8 length
2 CARD16 max_symbols
2 n number of keysyms supported
4n LISTofKEYSYM key symbols supported
BELLFEEDBACKSTATE
1 1 feedback class id
1 CARD8 id of this feedback
2 12 length
1 CARD8 percent
3 unused
2 CARD16 pitch
2 CARD16 duration
LEDFEEDBACKSTATE
1 1 feedback class id
1 CARD8 id of this feedback
2 12 length
4 CARD32 led_mask
4 BITMASK led_values
#x0001 On
#x0002 Off
ChangeFeedbackControl
1 CARD8 input extension opcode
1 23 ChangeFeedbackControl opcode
2 3+n/4 request length
4 BITMASK value-mask (has n bits set to 1)
#x0001 keyclick-percent
#x0002 bell-percent
#x0004 bell-pitch
#x0008 bell-duration
#x0010 led
#x0020 led-mode
#x0040 key
#x0080 auto-repeat-mode
#x0001 string
#x0001 integer
#x0001 acceleration-numerator
#x0002 acceleration-denominator
#x0004 acceleration-threshold
1 CARD8 device id
1 CARD8 feedback class id
2 unused
n FEEDBACKCLASS
FEEDBACKCLASS KBDFEEDBACKCTL, PTRFEEDBACKCTL, INTEGERFEEDBACKCTL,
STRINGFEEDBACKCTL, BELLFEEDBACKCTL, or LEDFEEDBACKCTL
KBDFEEDBACKCTL
1 0 feedback class id
1 CARD8 id of this feedback
2 20 length
1 KEYCODE key
1 auto-repeat-mode
0 Off
1 On
2 Default
1 INT8 key-click-percent
1 INT8 bell-percent
2 INT16 bell-pitch
2 INT16 bell-duration
4 CARD32 led_mask
4 CARD32 led_values
PTRFEEDBACKCTL
1 1 feedback class id
1 CARD8 id of this feedback
2 12 length
2 unused
2 INT16 numerator
2 INT16 denominator
2 INT16 threshold
STRINGCTL
1 2 feedback class id
1 CARD8 id of this feedback
2 4n+8 length
2 unused
2 n number of keysyms to display
4n LISTofKEYSYM list of key symbols to display
INTEGERCTL
1 3 feedback class id
1 CARD8 id of this feedback
2 8 length
4 INT32 integer to display
LEDCTL
1 4 feedback class id
1 CARD8 id of this feedback
2 12 length
4 CARD32 led_mask
4 BITMASK led_values
#x0001 On
#x0002 Off
BELLCTL
1 5 feedback class id
1 CARD8 id of this feedback
2 8 length
1 INT8 percent
3 unused
2 INT16 pitch
2 INT16 duration
GetDeviceKeyMapping
1 CARD8 input extension opcode
1 24 GetDeviceKeyMapping opcode
2 2 request length
1 CARD8 device
1 KEYCODE first-keycode
1 CARD8 count
1 unused
=>
1 1 Reply
1 24 GetDeviceKeyMapping opcode
2 CARD16 sequence number
4 nm reply length (m = count field from the request)
1 n keysyms-per-keycode
23 unused
4nm LISTofKEYSYM keysyms
ChangeDeviceKeyMapping
1 CARD8 input extension opcode
1 25 ChangeDeviceKeyMapping opcode
2 2+nm request length
1 CARD8 device
1 KEYCODE first-keycode
1 m keysyms-per-keycode
1 n keycode-count
4nm LISTofKEYSYM keysyms
GetDeviceModifierMapping
1 CARD8 input extension opcode
1 26 GetDeviceModifierMapping opcode
2 2 request length
1 CARD8 device
3 unused
=>
1 1 Reply
1 26 GetDeviceModifierMapping opcode
2 CARD16 sequence number
4 2n reply length
1 n keycodes-per-modifier
23 unused
8n LISTofKEYCODE keycodes
SetDeviceModifierMapping
1 CARD8 input extension opcode
1 27 SetDeviceModifier opcode
2 2+2n request length
1 CARD8 device
1 n keycodes-per-modifier
2 unused
8n LISTofKEYCODE keycodes
=>
1 1 Reply
1 27 SetDeviceModifierMapping opcode
2 CARD16 sequence number
4 0 reply length
1 status
0 Success
1 Busy
2 Failed
23 unused
GetDeviceButtonMapping
1 CARD8 input extension opcode
1 28 GetDeviceButtonMapping opcode
2 2 request length
1 CARD8 device
3 unused
=>
1 1 Reply
1 28 GetDeviceButtonMapping opcode
2 CARD16 sequence number
4 (n+p)/4 reply length
1 n number of elements in map list
23 unused
n LISTofCARD8 map
p unused, p=pad(n)
SetDeviceButtonMapping
1 CARD8 input extension opcode
1 29 SetDeviceButtonMapping opcode
2 2+(n+p)/4 request length
1 CARD8 device
1 n length of map
2 unused
n LISTofCARD8 map
p unused, p=pad(n)
=>
1 1 Reply
1 29 SetDeviceButtonMapping opcode
2 CARD16 sequence number
4 0 reply length
1 status
0 Success
1 Busy
23 unused
QueryDeviceState
1 CARD8 input extension opcode
1 30 QueryDeviceState opcode
2 2 request length
1 CARD8 device
3 unused
=>
1 1 Reply
1 30 QueryDeviceState opcode
2 CARD16 sequence number
4 m/4 reply length
1 n number of input classes
23 unused
m LISTofINPUTSTATE
INPUTSTATE KEYSTATE or BUTTONSTATE or VALUATORSTATE
KEYSTATE
1 CARD8 key input class id
1 36 length
1 CARD8 num_keys
1 unused
32 LISTofCARD8 status of keys
BUTTONSTATE
1 CARD8 button input class id
1 36 length
1 CARD8 num_buttons
1 unused
32 LISTofCARD8 status of buttons
VALUATORSTATE
1 CARD8 valuator input class id
1 4n + 4 length
1 n number of valuators
1 mode
#x01 DeviceMode (0 = Relative, 1 = Absolute)
#x02 ProximityState (0 = InProximity, 1 = OutOfProximity)
4n LISTofCARD32 status of valuators
SendExtensionEvent
1 CARD8 input extension opcode
1 31 SendExtensionEvent opcode
2 4 + 8n + m request length
4 WINDOW destination
1 CARD8 device
1 BOOL propagate
2 CARD16 eventclass count
1 CARD8 num_events
3 unused
32n LISTofEVENTS events to send
4m LISTofEVENTCLASS desired events
DeviceBell
1 CARD8 input extension opcode
1 32 DeviceBell opcode
2 2 request length
1 CARD8 device id
1 CARD8 feedback id
1 CARD8 feedback class
1 INT8 percent
SetDeviceValuators
1 CARD8 input extension opcode
1 33 SetDeviceValuators opcode
2 2 + n request length
1 CARD8 device id
1 CARD8 first valuator
1 n number of valuators
1 unused
4n LISTofINT32 valuator values to set
=>
1 1 Reply
1 33 SetDeviceValuators opcode
2 CARD16 sequence number
4 0 reply length
1 CARD8 status
0 Success
1 AlreadyGrabbed
23 unused
GetDeviceControl
1 CARD8 input extension opcode
1 34 GetDeviceControl opcode
2 2 request length
2 CARD16 device control type
1 CARD8 device id
1 unused
=>
1 1 Reply
1 34 GetDeviceControl opcode
2 CARD16 sequence number
4 n/4 reply length
1 CARD8 status
0 Success
1 AlreadyGrabbed
3 + first_error DeviceBusy
23 unused
n DEVICESTATE
DEVICESTATE DEVICERESOLUTIONSTATE
DEVICERESOLUTIONSTATE
2 0 control type
2 8 + 12n length
4 n num_valuators
4n LISTOfCARD32 resolution values
4n LISTOfCARD32 resolution min_values
4n LISTOfCARD32 resolution max_values
ChangeDeviceControl
1 CARD8 input extension opcode
1 35 ChangeDeviceControl opcode
2 2+n/4 request length
2 CARD16 control type
1 CARD8 device id
1 unused
n DEVICECONTROL
DEVICECONTROL DEVICERESOLUTIONCTL
DEVICERESOLUTIONCTL
2 1 control type
2 8 + 4n length
1 CARD8 first_valuator
1 n num_valuators
2 unused
4n LISTOfCARD32 resolution values
=>
1 1 Reply
1 35 ChangeDeviceControl opcode
2 CARD16 sequence number
4 0 reply length
1 CARD8 status
0 Success
1 AlreadyGrabbed
3 + first_error DeviceBusy
23 unused
Events
DeviceKeyPress, DeviceKeyRelease, DeviceButtonPress, DeviceButtonRelease,
ProximityIn, ProximityOut, and DeviceStateNotify events may be followed by
zero or more DeviceValuator events. DeviceMotionNotify events will be
followed by one or more DeviceValuator events.
DeviceValuator
1 CARD8 code
1 CARD8 device id
2 CARD16 sequence number
2 SETofKEYBUTMASK state
1 n number of valuators this device reports
1 m number of first valuator in this event
24 LISTofINT32 valuators
DeviceKeyPress
1 CARD8 code
1 KEYCODE detail
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW root
4 WINDOW event
4 WINDOW child
0 None
2 INT16 root-x
2 INT16 root-y
2 INT16 event-x
2 INT16 event-y
2 SETofKEYBUTMASK state
1 BOOL same-screen
1 CARD8 device id
#x80 MORE_EVENTS follow
DeviceKeyRelease
1 CARD8 code
1 KEYCODE detail
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW root
4 WINDOW event
4 WINDOW child
0 None
2 INT16 root-x
2 INT16 root-y
2 INT16 event-x
2 INT16 event-y
2 SETofKEYBUTMASK state
1 BOOL same-screen
1 CARD8 device id
#x80 MORE_EVENTS follow
DeviceButtonPress
1 CARD8 code
1 BUTTON detail
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW root
4 WINDOW event
4 WINDOW child
0 None
2 INT16 root-x
2 INT16 root-y
2 INT16 event-x
2 INT16 event-y
2 SETofKEYBUTMASK state
1 BOOL same-screen
1 CARD8 device id
#x80 MORE_EVENTS follow
DeviceButtonRelease
1 CARD8 code
1 BUTTON detail
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW root
4 WINDOW event
4 WINDOW child
0 None
2 INT16 root-x
2 INT16 root-y
2 INT16 event-x
2 INT16 event-y
2 SETofKEYBUTMASK state
1 BOOL same-screen
1 CARD8 device id
#x80 MORE_EVENTS follow
DeviceMotionNotify
1 CARD8 code
1 detail
0 Normal
1 Hint
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW root
4 WINDOW event
4 WINDOW child
0 None
2 INT16 root-x
2 INT16 root-y
2 INT16 event-x
2 INT16 event-y
2 SETofKEYBUTMASK state
1 BOOL same-screen
1 CARD8 device id
#x80 MORE_EVENTS follow
DeviceFocusIn
1 CARD8 code
1 detail
0 Ancestor
1 Virtual
2 Inferior
3 Nonlinear
4 NonlinearVirtual
5 Pointer
6 PointerRoot
7 None
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW event
1 mode
0 Normal
1 Grab
2 Ungrab
3 WhileGrabbed
1 CARD8 device id
18 unused
DeviceFocusOut
1 CARD8 code
1 detail
0 Ancestor
1 Virtual
2 Inferior
3 Nonlinear
4 NonlinearVirtual
5 Pointer
6 PointerRoot
7 None
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW event
1 mode
0 Normal
1 Grab
2 Ungrab
3 WhileGrabbed
1 CARD8 device id
18 unused
ProximityIn
1 CARD8 code
1 unused
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW root
4 WINDOW event
4 WINDOW child
0 None
2 INT16 root-x
2 INT16 root-y
2 INT16 event-x
2 INT16 event-y
2 SETofKEYBUTMASK state
1 BOOL same-screen
1 CARD8 device id
#x80 MORE_EVENTS follow
ProximityOut
1 CARD8 code
1 unused
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW root
4 WINDOW event
4 WINDOW child
0 None
2 INT16 root-x
2 INT16 root-y
2 INT16 event-x
2 INT16 event-y
2 SETofKEYBUTMASK state
1 BOOL same-screen
1 CARD8 device id
#x80 MORE_EVENTS follow
DeviceStateNotify events may be immediately followed by zero or one
DeviceKeyStateNotify and/ or zero or more DeviceValuator events.
DeviceStateNotify
1 CARD8 code
1 CARD8 device id
#x80 MORE_EVENTS follow
2 CARD16 sequence number
4 TIMESTAMP time
1 CARD8 num_keys
1 CARD8 num_buttons
1 CARD8 num_valuators
1 CARD8 valuator mode and input classes reported
#x01 reporting keys
#x02 reporting buttons
#x04 reporting valuators
#x40 device mode (0 = Relative, 1 = Absolute)
#x80 proximity state (0 = InProximity, 1 = OutOfProximity)
4 LISTofCARD8 first 32 keys (if reported)
4 LISTofCARD8 first 32 buttons (if reported)
12 LISTofCARD32 first 3 valuators (if reported)
DeviceKeyStateNotify
1 CARD8 code
1 CARD8 device id
#x80 MORE_EVENTS follow
2 CARD16 sequence number
28 LISTofCARD8 state of keys 33-255
DeviceButtonStateNotify
1 CARD8 code
1 CARD8 device id
#x80 MORE_EVENTS follow
2 CARD16 sequence number
28 LISTofCARD8 state of buttons 33-255
DeviceValuator
1 CARD8 code
1 CARD8 device id
2 CARD16 sequence number
2 SETofKEYBUTMASK state
1 n number of valuators this device reports
1 n number of first valuator in this event
24 LISTofINT32 valuators
DeviceMappingNotify
1 CARD8 code
1 CARD8 device id
2 CARD16 sequence number
1 request
0 MappingModifier
1 MappingKeyboard
2 MappingPointer
1 KEYCODE first-keycode
1 CARD8 count
1 unused
4 TIMESTAMP time
20 unused
ChangeDeviceNotify
1 CARD8 code
1 CARD8 id of device specified on change request
2 CARD16 sequence number
4 TIMESTAMP time
1 request
0 NewPointer
1 NewKeyboard
23 unused
libXi-1.7.1.901/specs/Makefile.in 0000664 0032045 0000764 00000056022 12162667576 013240 0000000 0000000 # Makefile.in generated by automake 1.13.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
#
# Generate output formats for a single DocBook/XML with/without chapters
#
# Variables set by the calling Makefile:
# shelfdir: the location where the docs/specs are installed. Typically $(docdir)
# docbook: the main DocBook/XML file, no chapters, appendix or image files
# chapters: all files pulled in by an XInclude statement and images.
#
#
# This makefile is intended for Users Documentation and Functional Specifications.
# Do not use for Developer Documentation which is not installed and does not require olink.
# Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393
# for an explanation on documents classification.
#
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
DIST_COMMON = $(top_srcdir)/docbook.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST)
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html)
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt)
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps)
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db)
subdir = specs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__dist_shelf_DATA_DIST = inputlib.xml library.xml encoding.xml
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"
DATA = $(dist_shelf_DATA) $(shelf_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@
ASCIIDOC = @ASCIIDOC@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BASE_CFLAGS = @BASE_CFLAGS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
FOP = @FOP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIB_MAN_DIR = @LIB_MAN_DIR@
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@
MANIFEST_TOOL = @MANIFEST_TOOL@
MAN_SUBSTS = @MAN_SUBSTS@
MISC_MAN_DIR = @MISC_MAN_DIR@
MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRICT_CFLAGS = @STRICT_CFLAGS@
STRIP = @STRIP@
STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@
VERSION = @VERSION@
XFIXES_CFLAGS = @XFIXES_CFLAGS@
XFIXES_LIBS = @XFIXES_LIBS@
XI_CFLAGS = @XI_CFLAGS@
XI_LIBS = @XI_LIBS@
XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@
XMLTO = @XMLTO@
XORG_MAN_PAGE = @XORG_MAN_PAGE@
XORG_SGML_PATH = @XORG_SGML_PATH@
XSLTPROC = @XSLTPROC@
XSL_STYLESHEET = @XSL_STYLESHEET@
XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
# Main DocBook/XML files (DOCTYPE book)
@ENABLE_SPECS_TRUE@docbook = inputlib.xml
# Included chapters, appendix, images
@ENABLE_SPECS_TRUE@chapters = library.xml encoding.xml
# The location where the DocBook/XML files and their generated formats are installed
@ENABLE_SPECS_TRUE@shelfdir = $(docdir)
# DocBook/XML generated output formats to be installed
@ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \
@ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4)
# DocBook/XML file with chapters, appendix and images it includes
@ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters)
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)"
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)"
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS)
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)"
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS)
# Generate documents cross-reference target databases
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)"
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)"
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl
@ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA)
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign specs/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_srcdir)/docbook.am:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-dist_shelfDATA: $(dist_shelf_DATA)
@$(NORMAL_INSTALL)
@list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \
done
uninstall-dist_shelfDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir)
install-shelfDATA: $(shelf_DATA)
@$(NORMAL_INSTALL)
@list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \
done
uninstall-shelfDATA:
@$(NORMAL_UNINSTALL)
@list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-dist_shelfDATA install-shelfDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
install-dist_shelfDATA install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-shelfDATA install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
uninstall-am uninstall-dist_shelfDATA uninstall-shelfDATA
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters)
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $<
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters)
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $<
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters)
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $<
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters)
@ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $<
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters)
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $<
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters)
@ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $<
# Generate DocBook/XML output formats with or without stylesheets
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
libXi-1.7.1.901/specs/library.xml 0000664 0032045 0000764 00000721242 11673753274 013361 0000000 0000000 Input Extension
Overview
This document describes an extension to
the X11 server. The purpose of this extension is to support the use
of additional input devices beyond the pointer and keyboard devices
defined by the core X protocol. This first section gives an overview
of the input extension. The following sections correspond to
chapters 9, 10, and 11, ``Window and Session Manager Functions'',
``Events'', and ``Event Handling Functions'' of the
``Xlib - C Language Interface'' manual
and describe how to use the input device extension.
Design Approach
The design approach of the extension is to define functions
and events analogous to the core functions and events.
This allows extension input devices and events to be individually
distinguishable from each other and from the core input devices and events.
These functions and events make use of a device identifier and support the
reporting of n-dimensional motion data as well as other data that
is not currently reportable via the core input events.
Core Input Devices
The X server core protocol supports two input devices: a pointer and a
keyboard. The pointer device has two major functions.
First, it may be used to generate motion information
that client programs can detect. Second, it may also be used to indicate the
current location and focus of the X keyboard. To accomplish this, the server
echoes a cursor at the current position of the X pointer. Unless the X
keyboard has been explicitly focused, this cursor also shows the current
location and focus of the X keyboard.
The X keyboard is used to generate input that client programs can detect.
The X keyboard and X pointer are referred to in this document as
the core devices, and the input
events they generate
( KeyPress ,
KeyRelease ,
ButtonPress ,
ButtonRelease ,
and
MotionNotify )
are known as the core input events. All other
input devices are referred to as extension input devices, and the
input events they generate are referred to as extension input events.
This input extension does not change the behavior or functionality of the
core input devices, core events, or core protocol requests, with the
exception of the core grab requests. These requests may affect the
synchronization of events from extension devices. See the explanation
in the section titled ``Event Synchronization and Core Grabs.''
Selection of the physical devices to be initially used by the server as the
core devices is left implementation dependent. Functions are defined that
allow client programs to change which physical devices are used as the
core devices.
Extension Input Devices
The input extension controls access to input devices other than the X keyboard
and X pointer. It allows client programs to select input from these devices
independently
from each other and independently from the core devices. Input events from
these devices are of extension types
( DeviceKeyPress ,
DeviceKeyRelease ,
DeviceButtonPress ,
DeviceButtonRelease ,
DeviceMotionNotify ,
and so on) and contain
a device identifier so that events of the same type coming from different
input devices can be distinguished.
Extension input events are not limited in size by the size of the server
32-byte wire events. Extension input events
may be constructed by the server sending as many
wire-sized events as necessary to return the information required for
that event.
The library event reformatting routines
are responsible for combining these into one or more client XEvents.
Any input device that generates key, button, or motion data may be used as
an extension input device.
Extension input devices may have zero or more keys, zero or more buttons,
and may report zero or more axes of motion. Motion may be reported
as relative movements from a previous position or as an absolute
position. All valuators reporting motion information for a given
extension input device must report the same kind of motion information
(absolute or relative).
This extension is designed to accommodate new types of input devices that
may be added in the future. The protocol requests that refer to
specific characteristics of input devices organize that information
by input device classes. Server implementors may add new
classes of input devices without changing the protocol requests.
All extension input
devices are treated like the core X keyboard in determining their location
and focus. The server does not track the location of these devices on an
individual basis and, therefore,
does not echo a cursor to indicate their current location.
Instead, their location is determined by the location of the core X pointer.
Like the core X keyboard, some may be explicitly focused. If they are
not explicitly focused, their focus
is determined by the location of the core X pointer.
Input Device Classes
Some of the input extension requests divide input devices into classes
based on their functionality. This is intended to allow new classes of input
devices to be defined at a later time without changing the semantics of
these functions. The following input device classes are currently
defined:
KEY
The device reports key events.
BUTTON
The device reports button events.
VALUATOR
The device reports valuator data in motion events.
PROXIMITY
The device reports proximity events.
FOCUS
The device can be focused.
FEEDBACK
The device supports feedbacks.
Additional classes may be added in the future.
Functions that support multiple input classes, such as the
function that lists all available input devices,
organize the data they return by input class. Client programs that
use these functions should not access data unless it matches a
class defined at the time those clients were compiled. In this way,
new classes can be added without forcing existing clients that use
these functions to be recompiled.
Using Extension Input Devices
A client that wishes to access an input device does so through the library
functions defined in the following sections. A typical sequence of requests
that a client would make is as follows:
- lists all of the available input devices. From the
information returned by this request, determine whether the desired input
device is attached to the server. For a description of the
request, see the section entitled ``Listing Available Devices.''
- requests that the server open the device for access by this client.
This request returns an
XDevice
structure that is used
by most other input extension requests to identify the specified device.
For a description of the
request, see the section entitled ``Enabling and Disabling Extension Devices.''
Determine the event types and event classes needed to select the desired
input extension events, and identify them when they are received.
This is done via macros whose name corresponds to the desired event, for
example,
DeviceKeyPress .
For a description of these macros,
see the section entitled ``Selecting Extension Device Events.''
- selects the desired events from the server.
For a description of the
XSelextExtensionEvent
request, see the section entitled ``Selecting Extension Device Events.''
XNextEvent
- receives the next available event. This is the core
XNextEvent
function provided by the standard X libarary.
Other requests are defined to grab and focus extension devices, to
change their key, button, or modifier mappings, to control the
propagation of input extension events, to get motion history from an
extension device, and to send input extension events to another client.
These functions are described in the following sections.
Library Extension Requests
Extension input devices are accessed by client programs through the
use of new protocol requests.
The following requests are provided as extensions to Xlib. Constants
and structures referenced by these functions may be found in the
files <X11/extensions/XI.h> and <X11/extensions/XInput.h>,
which are attached to this document as
Appendix A.
The library will return NoSuchExtension if an extension request
is made to a server that does not support the input extension.
Input extension requests cannot be used to access the X keyboard and
X pointer devices.
Window Manager Functions
This section discusses the following X Input Extension Window Manager topics:
Changing the core devices
Event synchronization and core grabs
Extension active grabs
Passively grabbing a key
Passively grabbing a button
Thawing a device
Controlling device focus
Controlling device feedback
Ringing a bell on an input device
Controlling device encoding
Controlling button mapping
Obtaining the state of a device
Changing the Core Devices
These functions are provided to change which physical device is used
as the X pointer or X keyboard.
Using these functions may change the characteristics of the core devices.
The new pointer device may have a different number of buttons from the
old one, or the new keyboard device may have a different number of
keys or report a different range of keycodes. Client programs may be
running that depend on those characteristics. For example, a client
program could allocate an array based on the number of buttons on the
pointer device and then use the button numbers received in button events
as indices into that array. Changing the core devices could cause
such client programs to behave improperly or to terminate abnormally
if they ignore the
ChangeDeviceNotify
event generated by these requests.
These functions change the X keyboard or X pointer device and generate an
XChangeDeviceNotify
event and a
MappingNotify
event.
The specified device becomes the
new X keyboard or X pointer device. The location of the core device
does not change as a result of this request.
These requests fail and return
AlreadyGrabbed
if either the specified
device or the core device it would replace are grabbed by some other client.
They fail and return
GrabFrozen
if either device is frozen by the active grab of another client.
These requests fail with a
BadDevice
error if the specified device is invalid, has not previously been opened via
XOpenDevice ,
or is
not supported as a core device by the server implementation.
Once the device has successfully replaced one of the core devices, it
is treated as a core device until it is in turn replaced by another
ChangeDevice
request or until the server terminates. The termination
of the client that changed the device will not cause it to change back.
Attempts to use the
request to close the new core device will fail with a
BadDevice
error.
To change which physical device is used as the X keyboard, use the
function.
The specified device must support input class
Keys
(as reported in the
ListInputDevices
request) or the request will fail with a
BadMatch
error.
int XChangeKeyboardDevice
Display *display
XDevice *device
display
Specifies the connection to the X server.
device
Specifies the desired device.
If no error occurs,
returns
Success .
A
ChangeDeviceNotify
event with the request field set to
NewKeyboard
is sent to all clients selecting that event.
A
MappingNotify
event with the request field set to
MappingKeyboard
is sent to all clients.
The requested device becomes the X keyboard, and the old keyboard becomes
available as an extension input device.
The focus state of the new keyboard is the same as
the focus state of the old X keyboard.
can generate
AlreadyGrabbed ,
BadDevice ,
BadMatch ,
and
GrabFrozen
errors.
To change which physical device is used as the X pointer,
use the
function.
The specified device must support input class
Valuators
(as reported in the
request) and report at least two axes of motion,
or the request will fail with a
BadMatch
error.
If the specified device reports more than two axes, the two specified in
the xaxis and yaxis arguments will be used. Data from other
valuators on the device will be ignored.
If the specified device reports absolute positional information, and the
server implementation does not allow such a device to be used as the
X pointer, the request will fail with a
BadDevice
error.
int XChangePointerDevice
Display *display
XDevice *device
int xaxis
int yaxis
display
Specifies the connection to the X server.
device
Specifies the desired device.
xaxis
Specifies the zero-based index of the axis to be used as the x-axis of the
pointer device.
yaxis
Specifies the zero-based index of the axis to be used as the y-axis of the
pointer device.
If no error occurs,
returns
Success .
A
ChangeDeviceNotify
event with the request field set to
NewPointer
is sent to all clients selecting that event.
A
MappingNotify
event with the request field set to
MappingPointer
is sent to all clients.
The requested device becomes the X pointer, and the old pointer becomes
available as an extension input device.
can generate
AlreadyGrabbed ,
BadDevice ,
BadMatch ,
and
GrabFrozen
errors.
Event Synchronization and Core Grabs
Implementation of the input extension requires an extension of the
meaning of event synchronization for the core grab requests. This is
necessary in order to allow window managers to freeze all input devices
with a single request.
The core grab requests require a pointer_mode and keyboard_mode
argument. The meaning of these modes is changed by the input extension.
For the
XGrabPointer
and
XGrabButton
requests, pointer_mode controls synchronization of the pointer device,
and keyboard_mode controls the synchronization of all other input devices.
For the
XGrabKeyboard
and
XGrabKey
requests, pointer_mode controls the synchronization
of all input devices, except the X keyboard, while keyboard_mode controls
the synchronization of the keyboard. When using one of the core grab
requests, the synchronization of extension devices
is controlled by the mode specified for the device not being grabbed.
Extension Active Grabs
Active grabs of
extension devices are supported via the
function in the same way that core devices are grabbed using the core
XGrabKeyboard
function, except that an extension input device
is passed as a function parameter.
The
function allows a previous active grab for an extension device to be released.
Passive grabs of buttons and keys on extension devices are supported
via the
and
functions.
These passive grabs are released via the
and
functions.
To grab an extension device, use the
function.
The device must have previously been opened using the
function.
int XGrabDevice
Display *display
XDevice *device
Window grab_window
Bool owner_events
int event_count
XEventClass *event_list
int this_device_mode
int other_device_mode
Time time
"display"
Specifies the connection to the X server.
device
Specifies the desired device.
grab_window
Specifies the ID of a window associated with the device specified above.
owner_events
Specifies a boolean value of either
True
or
False .
event_count
Specifies the number of elements in the event_list array.
event_list
Specifies a pointer to a list of event classes that indicate which events
the client wishes to receive.
These event classes must have been obtained
using the device being grabbed.
this_device_mode
Controls further processing of events from this device. You can pass one
of these constants:
GrabModeSync
or
GrabModeAsync .
other_device_mode
Controls further processing of events from all other devices. You can pass one
of these constants:
GrabModeSync
or
GrabModeAsync .
time
Specifies the time. This may be either a timestamp expressed in
milliseconds or
CurrentTime .
actively grabs an extension input device and generates
DeviceFocusIn
and
DeviceFocusOut
events.
Further input events from this device are reported only to the grabbing client.
This function overrides any previous active grab by this client for this device.
The event_list parameter is a pointer to a list of event classes. This list
indicates which events the client wishes to receive while the grab is active.
If owner_events is
False ,
input events from this device are reported with respect to
grab_window and are reported only if specified in event_list.
If owner_events is
True ,
then if a generated event would normally be reported to this client,
it is reported normally.
Otherwise, the event is reported with respect to the grab_window and is only
reported if specified in event_list.
The this_device_mode argument controls the further processing
of events from this device, and the other_device_mode argument controls
the further processing of input events from all other devices.
If the this_device_mode argument is
GrabModeAsync ,
device event processing continues
normally; if the device is currently frozen by this client, then
processing of device events is resumed.
If the this_device_mode argument is
GrabModeSync ,
the state of the grabbed device
(as seen by client applications) appears to freeze,
and no further device events are generated by the server until the
grabbing client issues a releasing
call or until the device grab is released.
Actual device input events are not lost while the device is frozen; they are
simply queued for later processing.
If the other_device_mode is
GrabModeAsync ,
event processing from other input devices is unaffected
by activation of the grab.
If other_device_mode is
GrabModeSync ,
the state of all devices except the grabbed device
(as seen by client applications) appears to freeze, and no further
events are generated by the server until the grabbing client issues a
releasing
XAllowEvents
or
call or until the device grab is released.
Actual events are not lost
while the other devices are frozen; they are simply queued for later
processing.
fails on the following conditions:
If the device is actively grabbed by some other client, it returns
AlreadyGrabbed .
If grab_window is not viewable, it returns
GrabNotViewable .
If the specified time is earlier
than the last-grab-time for the specified device
or later than the current X server time, it returns
GrabInvalidTime .
Otherwise,
the last-grab-time for the specified device is set
to the specified time and
CurrentTime
is replaced by the current X server time.
If the device is frozen by an active grab of another client, it returns
GrabFrozen .
If a grabbed device is closed by a client while an active grab by that
client is in effect, that active grab will be released.
Any passive grabs established by that client will be released.
If the device is frozen only by an active grab
of the requesting client, it is thawed.
can generate
BadClass ,
BadDevice ,
BadValue ,
and
BadWindow
errors.
To release a grab of an extension device, use the
function.
int XUngrabDevice
Display *display
XDevice *device
Time time
display
Specifies the connection to the X server.
device
Specifies the desired device.
time
Specifies the time. This may be either a timestamp expressed in
milliseconds, or
CurrentTime .
allows a client to release an extension input device and any
queued events if this client has it grabbed from either
or
XGrabDeviceKey .
If any other devices are frozen by the grab,
thaws them.
This function does not release the device and any
queued events if the specified time is earlier than the last-device-grab
time or is later than the current X server time. It also generates
DeviceFocusIn
and
DeviceFocusOut
events. The X server automatically performs an
if the event window for an active device grab becomes not viewable
or if the client terminates without releasing the grab.
can generate
BadDevice
errors.
Passively Grabbing a Key
To passively grab a single key on an extension device, use
XGrabDeviceKey .
That device must have previously been opened using the
function, or the request will fail with a
BadDevice
error.
If the specified device does not support input class
Keys ,
the request will fail with a
BadMatch
error.
int XGrabDeviceKey
Display *display
XDevice *device
int keycode
unsignedint modifiers
XDevice *modifier_device
Window grab_window
Bool owner_events
int event_count
XEventClass *event_list
int this_device_mode
int other_device_mode
display
Specifies the connection to the X server.
device
Specifies the desired device.
keycode
Specifies the keycode of the key that is to be grabbed. You can pass
either the keycode or
AnyKey .
modifiers
Specifies the set of keymasks. This mask is the bitwise inclusive OR
of these keymask bits:
ShiftMask ,
LockMask ,
ControlMask ,
Mod1Mask ,
Mod2Mask ,
Mod3Mask ,
Mod4Mask ,
and
Mod5Mask .
You can also pass
AnyModifier ,
which is equivalent to issuing the grab key request
for all possible modifier combinations (including the combination
of no modifiers).
modifier_device
Specifies the device whose modifiers are to be used. If NULL is
specified, the core X keyboard is used as the modifier_device.
grab_window
Specifies the ID of a window associated with the device specified above.
owner_events
Specifies a boolean value of either
True
or
False .
event_count
Specifies the number of elements in the event_list array.
event_list
Specifies a pointer to a list of event classes that indicate which events
the client wishes to receive.
this_device_mode
Controls further processing of events from this device.
You can pass one of these constants:
GrabModeSync
or
GrabModeAsync .
other_device_mode
Controls further processing of events from all other devices.
You can pass one of these constants:
GrabModeSync
or
GrabModeAsync .
is analogous to the core
XGrabKey
function. It creates an
explicit passive grab for a key on an extension device.
The
function establishes a passive grab on a device.
Consequently, in the future,
IF the device is not grabbed and the specified key,
which itself can be a modifier key, is logically pressed
when the specified modifier keys logically are down on the specified
modifier device (and no other keys are down),
AND no other modifier keys logically are down,
AND EITHER the grab window is an ancestor of (or is) the focus window
or the grab window is a descendent of the focus window and contains the pointer,
AND a passive grab on the same device and key combination does not exist on any
ancestor of the grab window,
THEN the device is actively grabbed, as for
XGrabDevice ,
the last-device-grab time is set to the time at which the key was pressed
(as transmitted in the
DeviceKeyPress
event), and the
DeviceKeyPress
event is reported.
The interpretation of the remaining arguments is as for
XGrabDevice .
The active grab is terminated automatically when the logical state of the
device has the specified key released
(independent of the logical state of the modifier keys).
Note that the logical state of a device (as seen by means of the X protocol)
may lag the physical state if device event processing is frozen.
A modifier of
AnyModifier
is equivalent to issuing the request for all
possible modifier combinations (including the combination of no modifiers).
It is not required that all modifiers specified have
currently assigned keycodes.
A key of
AnyKey
is equivalent to issuing
the request for all possible keycodes. Otherwise, the key must be in
the range specified by min_keycode and max_keycode in the
information returned by the
function.
If it is not within that range,
generates a
BadValue
error.
generates a
BadAccess
error if some other client has issued a
with the same device and key combination on the same window.
When using
AnyModifier
or
AnyKey ,
the request fails completely and the X server generates a
BadAccess
error, and no grabs are established if there is a conflicting grab
for any combination.
returns
Success
upon successful completion of the request.
can generate
BadAccess ,
BadClass ,
BadDevice ,
BadMatch ,
BadValue ,
and
BadWindow
errors.
To release a passive grab of a single key on an extension device, use
XUngrabDeviceKey .
int XUngrabDeviceKey
Display *display
XDevice *device
int keycode
unsignedint modifiers
XDevice *modifier_device
Window ungrab_window
display
Specifies the connection to the X server.
device
Specifies the desired device.
keycode
Specifies the keycode of the key that is to be ungrabbed. You can pass
either the keycode or
AnyKey .
modifiers
Specifies the set of keymasks. This mask is the bitwise inclusive OR
of these keymask bits:
ShiftMask ,
LockMask ,
ControlMask ,
Mod1Mask ,
Mod2Mask ,
Mod3Mask ,
Mod4Mask ,
and
Mod5Mask .
You can also pass
AnyModifier ,
which is equivalent to issuing the ungrab key
request for all possible modifier combinations (including the combination
of no modifiers).
modifier_device
Specifies the device whose modifiers are to be used. If NULL is
specified, the core X keyboard is used as the modifier_device.
ungrab_window
Specifies the ID of a window associated with the device specified above.
is analogous to the core
XUngrabKey
function. It releases an explicit passive grab for a key
on an extension input device.
can generate
BadAlloc ,
BadDevice ,
BadMatch ,
BadValue ,
and
BadWindow
errors.
Passively Grabbing a Button
To establish a passive grab for a single button on an extension device, use
XGrabDeviceButton .
The specified device must have previously been opened using the
function, or the request will fail with a
BadDevice
error. If the specified device does not support input class
Buttons ,
the request will fail with a
BadMatch
error.
int XGrabDeviceButton
Display *display
XDevice *device
unsignedint button
unsignedint modifiers
XDevice*modifier_device
Window grab_window
Bool owner_events
int event_count
XEventClass *event_list
int this_device_mode
int other_device_mode
display
Specifies the connection to the X server.
device
Specifies the desired device.
button
Specifies the code of the button that is to be grabbed. You can pass
either the button or
AnyButton .
modifiers
Specifies the set of keymasks. This mask is the bitwise inclusive OR
of these keymask bits:
ShiftMask ,
LockMask ,
ControlMask ,
Mod1Mask ,
Mod2Mask ,
Mod3Mask ,
Mod4Mask ,
and
Mod5Mask .
You can also pass
AnyModifier ,
which is equivalent to issuing the grab request
for all possible modifier combinations (including the combination
of no modifiers).
modifier_device
Specifies the device whose modifiers are to be used. If NULL is
specified, the core X keyboard is used as the modifier_device.
grab_window
Specifies the ID of a window associated with the device specified above.
owner_events
Specifies a boolean value of either
True
or
False .
event_count
Specifies the number of elements in the event_list array.
event_list
Specifies a list of event classes that indicates which device events are to be
reported to the client.
this_device_mode
Controls further processing of events from this device. You can pass one
of these constants:
GrabModeSync
or
GrabModeAsync .
other_device_mode
Controls further processing of events from all other devices. You can pass one
of these constants:
GrabModeSync
or
GrabModeAsync .
is analogous to the core
XGrabButton
function.
It creates an explicit passive grab for a button on an extension input device.
Because the server does not track extension devices,
no cursor is specified with this request.
For the same reason, there is no confine_to parameter.
The device must have previously been opened using the
function.
The
function establishes a passive grab on a device.
Consequently, in the future,
IF the device is not grabbed and the specified button is logically pressed
when the specified modifier keys logically are down
(and no other buttons or modifier keys are down),
AND EITHER the grab window is an ancestor of (or is) the focus window
OR the grab window is a descendent of the focus window and contains the pointer,
AND a passive grab on the same device and button/key combination does not
exist on any ancestor of the grab window,
THEN the device is actively grabbed, as for
XGrabDevice ,
the last-grab time is set to the time at which the button was pressed
(as transmitted in the
DeviceButtonPress
event), and the
DeviceButtonPress
event is reported.
The interpretation of the remaining arguments is as for
XGrabDevice .
The active grab is terminated automatically when logical state of the
device has all buttons released (independent of the logical state of
the modifier keys).
Note that the logical state of a device (as seen by means of the X protocol)
may lag the physical state if device event processing is frozen.
A modifier of
AnyModifier
is equivalent to issuing the request for all
possible modifier combinations (including the combination of no
modifiers).
It is not required that all modifiers specified have
currently assigned keycodes.
A button of
AnyButton
is equivalent to issuing
the request for all possible buttons.
Otherwise, it is not required that the
specified button be assigned to a physical button.
generates a
BadAccess
error if some other client has issued a
with the same device and button combination on the same window.
When using
AnyModifier
or
AnyButton ,
the request fails completely and the X server generates a
BadAccess
error and no grabs are
established if there is a conflicting grab for any combination.
can generate
BadAccess ,
BadClass ,
BadDevice ,
BadMatch ,
BadValue ,
and
BadWindow
errors.
To release a passive grab of a button on an extension device, use
XUngrabDeviceButton .
int XUngrabDeviceButton
Display *display
XDevice *device
unsignedint button
unsignedint modifiers
XDevice *modifier_device
Window ungrab_window
display
Specifies the connection to the X server.
device
Specifies the desired device.
button
Specifies the code of the button that is to be ungrabbed. You can pass
either a button or
AnyButton .
modifiers
Specifies the set of keymasks. This mask is the bitwise inclusive OR
of these keymask bits:
ShiftMask ,
LockMask ,
ControlMask ,
Mod1Mask ,
Mod2Mask ,
Mod3Mask ,
Mod4Mask ,
and
Mod5Mask .
You can also pass
AnyModifier ,
which is equivalent to issuing the ungrab key
request for all possible modifier combinations (including the combination
of no modifiers).
modifier_device
Specifies the device whose modifiers are to be used. If NULL is
specified, the core X keyboard is used as the modifier_device.
ungrab_window
Specifies the ID of a window associated with the device specified above.
is analogous to the core
XUngrabButton
function. It releases an explicit passive grab for a button
on an extension device.
That device must have previously been opened using the
function, or a
BadDevice
error will result.
A modifier of
AnyModifier
is equivalent to issuing the request for all
possible modifier combinations (including the combination of no
modifiers).
can generate
BadAlloc ,
BadDevice ,
BadMatch ,
BadValue ,
and
BadWindow
errors.
Thawing a Device
To allow further events to be processed when a device has been frozen, use
XAllowDeviceEvents .
int XAllowDeviceEvents
Display *display
XDevice *device
int event_mode
Time time
display
Specifies the connection to the X server.
device
Specifies the desired device.
event_mode
Specifies the event mode. You can pass one of these constants:
AsyncThisDevice ,
SyncThisDevice ,
AsyncOtherDevices ,
ReplayThisDevice ,
AsyncAll ,
or
SyncAll .
time
Specifies the time. This may be either a timestamp expressed in
milliseconds, or
CurrentTime .
releases some queued events if the client has caused a device to freeze.
It has no effect if the specified time is earlier than the last-grab
time of the most recent active grab for the client and device,
or if the specified time is later than the current X server time.
The following describes the processing that occurs depending on what constant
you pass to the event_mode argument:
AsyncThisDevice
If the specified device is frozen by the client, event processing for that
continues as usual. If the device is frozen multiple times by the client on
behalf of multiple separate grabs,
AsyncThisDevice
thaws for all.
AsyncThisDevice
has no effect if the specified device is not frozen by the
client, but the device need not be grabbed by the client.
SyncThisDevice
If the specified device is frozen and actively grabbed by the client,
event processing for that device continues normally until the next
key or button event is reported to the client.
At this time,
the specified device again appears to freeze.
However, if the reported event causes the grab to be released,
the specified device does not freeze.
SyncThisDevice
has no effect if the specified device is not frozen by the client
or is not grabbed by the client.
ReplayThisDevice
If the specified device is actively grabbed by the client
and is frozen as the result of an event having been sent to the client
(either from the activation of a
GrabDeviceButton
or from a previous
AllowDeviceEvents
with mode
SyncThisDevice ,
but not from a
Grab ),
the grab is released and that event is completely reprocessed.
This time, however, the request ignores any passive grabs at or above
(toward the root) the grab-window of the grab just released.
The request has no effect if the specified device is not grabbed by the client
or if it is not frozen as the result of an event.
AsyncOtherDevices
If the remaining devices are frozen by the client,
event processing for them continues as usual.
If the other devices are frozen multiple times by the client on behalf of
multiple separate grabs,
AsyncOtherDevices
``thaws'' for all.
AsyncOtherDevices
has no effect if the devices are not frozen by the client,
but those devices need not be grabbed by the client.
SyncAll
If all devices are frozen by the client,
event processing (for all devices) continues normally until the next
button or key event is reported
to the client for a grabbed device,
at which time the devices again appear to
freeze. However, if the reported event causes the grab to be released,
then the devices do not freeze (but if any device is still
grabbed, then a subsequent event for it will still cause all devices
to freeze).
SyncAll
has no effect unless all devices are frozen by the client.
If any device is frozen twice
by the client on behalf of two separate grabs,
SyncAll
"thaws" for both (but a subsequent freeze for
SyncAll
will freeze each device only once).
AsyncAll
If all devices are frozen by the
client, event processing (for all devices) continues normally.
If any device is frozen multiple times by the client on behalf of multiple
separate grabs,
AsyncAll
``thaws ''for all.
If any device is frozen twice by the client on behalf of two separate grabs,
AsyncAll
``thaws'' for both.
AsyncAll
has no effect unless all devices are frozen by the client.
AsyncThisDevice ,
SyncThisDevice ,
and
ReplayThisDevice
have no effect on the processing of events from the remaining devices.
AsyncOtherDevices
has no effect on the processing of events from the specified device.
When the event_mode is
SyncAll
or
AsyncAll ,
the device parameter is ignored.
It is possible for several grabs of different devices (by the same
or different clients) to be active simultaneously.
If a device is frozen on behalf of any grab,
no event processing is performed for the device.
It is possible for a single device to be frozen because of several grabs.
In this case,
the freeze must be released on behalf of each grab before events can
again be processed.
can generate
BadDevice
and
BadValue
errors.
Controlling Device Focus
The current focus window for an extension input device can be
determined using the
function.
Extension devices are focused using the
function in the same way that the keyboard is focused using the core
XSetInputFocus
function, except that a device ID is passed as
a function parameter. One additional focus state,
FollowKeyboard ,
is provided for extension devices.
To get the current focus state, revert state,
and focus time of an extension device, use
XGetDeviceFocus .
int XGetDeviceFocus
Display *display
XDevice *device
Window *focus_return
int *revert_to_return
Time *focus_time_return
display
Specifies the connection to the X server.
device
Specifies the desired device.
focus_return
Specifies the address of a variable into which the server can return the ID of
the window that contains the device focus or one of the constants
None ,
PointerRoot ,
or
FollowKeyboard .
revert_to_return
Specifies the address of a variable into which the server can
return the current revert_to status for the device.
focus_time_return
Specifies the address of a variable into which the server can
return the focus time last set for the device.
returns the focus state, the revert-to state,
and the last-focus-time for an extension input device.
can generate
BadDevice
and
BadMatch
errors.
To set the focus of an extension device, use
XSetDeviceFocus .
int XSetDeviceFocus
Display *display
XDevice *device
Window focus
int revert_to
Time time
display
Specifies the connection to the X server.
device
Specifies the desired device.
focus
Specifies the ID of the window to which the device's focus should be set.
This may be a window ID, or
PointerRoot ,
FollowKeyboard ,
or
None .
revert_to
Specifies to which window the focus of the device should revert
if the focus window becomes not viewable. One of the following
constants may be passed:
RevertToParent ,
RevertToPointerRoot ,
RevertToNone ,
or
RevertToFollowKeyboard .
time
Specifies the time. You can pass either a timestamp, expressed in
milliseconds, or
CurrentTime .
changes the focus for an extension input device and the
last-focus-change-time. It has no effect if the specified
time is earlier than the last-focus-change-time or is later than the
current X server time. Otherwise, the last-focus-change-time is set to the
specified time.
This function causes the X server to generate
DeviceFocusIn
and
DeviceFocusOut
events.
The action taken by the server when this function is requested depends
on the value of the focus argument:
If the focus argument is
None ,
all input events from this device will be discarded until a new focus window
is set. In this case, the revert_to argument is ignored.
If the focus argument is a window ID, it becomes the focus
window of the device. If an input event from the device would normally
be reported to this window or to one of its inferiors, the event is
reported normally. Otherwise, the event is reported relative to the focus
window.
If the focus argument is
PointerRoot ,
the focus window is dynamically taken to be the root window
of whatever screen the pointer is on at each input event.
In this case, the revert_to argument is ignored.
If the focus argument is
FollowKeyboard ,
the focus window is dynamically taken to be the same as the focus
of the X keyboard at each input event.
The specified focus window must be viewable at the time
is called. Otherwise, it generates a
BadMatch
error.
If the focus window later becomes not viewable,
the X server evaluates the revert_to argument
to determine the new focus window.
If the revert_to argument is
RevertToParent ,
the focus reverts to the parent (or the closest viewable ancestor),
and the new revert_to value is taken to be
RevertToNone .
If the revert_to argument is
RevertToPointerRoot ,
RevertToFollowKeyboard ,
or
RevertToNone ,
the focus reverts to that value.
When the focus reverts,
the X server generates
DeviceFocusIn
and
DeviceFocusOut
events, but the last-focus-change time is not affected.
can generate
BadDevice ,
BadMatch ,
BadValue ,
and
BadWindow
errors.
Controlling Device Feedback
To determine the current feedback settings of an extension input device, use
XGetFeedbackControl .
XFeedbackState * XGetFeedbackControl
Display *display
XDevice *device
int *num_feedbacks_return
display
Specifies the connection to the X server.
device
Specifies the desired device.
num_feedbacks_return
Returns the number of feedbacks supported by the device.
returns a list of
FeedbackState
structures that describe the feedbacks supported by the specified device.
There is an
XFeedbackState
structure for each class of feedback. These are of
variable length, but the first three members are common to all.
typedef struct {
XID class;
int length;
XID id;
} XFeedbackState;
The common members are as follows:
The class member identifies the class of feedback.
It may be compared to constants defined in the file
< X11/extensions/XI.h >.
Currently defined feedback constants include:
KbdFeedbackClass ,
PtrFeedbackClass ,
StringFeedbackClass ,
IntegerFeedbackClass ,
LedFeedbackClass ,
and
BellFeedbackClass .
The length member specifies the length of the
FeedbackState
structure and can be used by clients to traverse the list.
The id member uniquely identifies a feedback for a given device and class.
This allows a device to support more than one feedback of the same class.
Other feedbacks of other classes or devices may have the same ID.
Those feedbacks equivalent to those
supported by the core keyboard are reported in class
KbdFeedback
using the
XKbdFeedbackState
structure, which is defined as follows:
typedef struct {
XID class;
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int global_auto_repeat;
char auto_repeats[32];
} XKbdFeedbackState;
The additional members of the
XKbdFeedbackState
structure report the current state of the feedback:
The click member specifies the key-click volume and has a value in the range
0 (off) to 100 (loud).
The percent member specifies the bell volume and has a value in the range
0 (off) to 100 (loud).
The pitch member specifies the bell pitch in Hz. The range of the value is
implementation-dependent.
The duration member specifies the duration in milliseconds of the bell.
The led_mask member is a bit mask that describes the current state of up to
32 LEDs. A value of 1 in a bit indicates that the corresponding LED is on.
The global_auto_repeat member has a value of
AutoRepeatModeOn
or
AutoRepeatModeOff .
The auto_repeats member is a bit vector. Each bit set to 1 indicates
that auto-repeat is enabled for the corresponding key. The vector is
represented as 32 bytes. Byte N (from 0) contains the bits for keys
8N to 8N + 7, with the least significant bit in the byte representing
key 8N.
Those feedbacks equivalent to those
supported by the core pointer are reported in class
PtrFeedback
using the
XPtrFeedbackState
structure, which is defined as follows:
typedef struct {
XID class;
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackState;
The additional members of the
XPtrFeedbackState
structure report the current state of the feedback:
The accelNum member returns the numerator for the acceleration multiplier.
The accelDenom member returns the denominator for the acceleration multiplier.
The accelDenom member returns the threshold for the acceleration.
Integer feedbacks are those capable of displaying integer numbers
and reported via the
XIntegerFeedbackState
structure.
The minimum and maximum values that they can display are reported.
typedef struct {
XID class;
int length;
XID id;
int resolution;
int minVal;
int maxVal;
} XIntegerFeedbackState;
The additional members of the
XIntegerFeedbackState
structure report the capabilities of the feedback:
The resolution member specifies the number of digits that the feedback
can display.
The minVal member specifies the minimum value that the feedback can display.
The maxVal specifies the maximum value that the feedback can display.
String feedbacks are those that can display character information
and are reported via the
XStringFeedbackState
structure.
Clients set these feedbacks by passing a list of
KeySyms
to be displayed.
The
function returns the
set of key symbols that the feedback can display, as well as the
maximum number of symbols that can be displayed.
The
XStringFeedbackState
structure is defined as follows:
typedef struct {
XID class;
int length;
XID id;
int max_symbols;
int num_syms_supported;
KeySym *syms_supported;
} XStringFeedbackState;
The additional members of the
XStringFeedbackState
structure report the capabilities of the feedback:
The max_symbols member specifies the maximum number of symbols
that can be displayed.
The syms_supported member is a pointer to the list of supported symbols.
The num_syms_supported member specifies the length of the list of supported symbols.
Bell feedbacks are those that can generate a sound
and are reported via the
XBellFeedbackState
structure.
Some implementations may support a bell as part of a
KbdFeedback
feedback. Class
BellFeedback
is provided for implementations that do not choose to do
so and for devices that support multiple feedbacks that can produce sound.
The meaning of the members is the same as that of the corresponding fields in
the
XKbdFeedbackState
structure.
typedef struct {
XID class;
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackState;
Led feedbacks are those that can generate a light and are reported via the
XLedFeedbackState
structure.
Up to 32 lights per feedback are supported.
Each bit in led_mask
corresponds to one supported light, and the corresponding bit in led_values
indicates whether that light is currently on (1) or off (0).
Some implementations may support leds as part of a
KbdFeedback
feedback.
Class
LedFeedback
is provided for implementations that do not choose to do
so and for devices that support multiple led feedbacks.
typedef struct {
XID class;
int length;
XID id;
Mask led_values;
Mask led_mask;
} XLedFeedbackState;
can generate
BadDevice
and
BadMatch
errors.
To free the information returned by the
function, use
XFreeFeedbackList .
void XFreeFeedbackList
XFeedbackState *list
list
Specifies the pointer to the
XFeedbackState
structure returned by
a previous call to
XGetFeedbackControl .
frees the list of feedback control information.
To change the settings of a feedback on an extension device, use
XChangeFeedbackControl .
This function modifies the current control values of the specified feedback
using information passed in the appropriate
XFeedbackControl
structure for the feedback.
Which values are modified depends on the valuemask passed.
int XChangeFeedbackControl
Display *display
XDevice *device
unsignedlong valuemask
XFeedbackControl *value
display
Specifies the connection to the X server.
device
Specifies the desired device.
valuemask
Specifies one value for each bit in the mask (least to most significant
bit). The values are associated with the feedbacks for the specified
device.
value
Specifies a pointer to the
XFeedbackControl
structure.
controls the device characteristics described by the
XFeedbackControl
structure.
There is an
XFeedbackControl
structure for each class of feedback.
These are of variable length, but the first
three members are common to all and are as follows:
typedef struct {
XID class;
int length;
XID id;
} XFeedbackControl;
Feedback class
KbdFeedback
controls feedbacks equivalent to those provided by the core keyboard using the
KbdFeedbackControl
structure, which is defined as follows:.
typedef struct {
XID class;
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int led_value;
int key;
int auto_repeat_mode;
} XKbdFeedbackControl;
This class controls the device characteristics described by the
XKbdFeedbackControl
structure. These include the key_click_percent,
global_auto_repeat, and individual key auto-repeat. Valid modes
are
AutoRepeatModeOn ,
AutoRepeatModeOff ,
and
AutoRepeatModeDefault .
Valid masks are as follows:
#define DvKeyClickPercent (1><<0)
#define DvPercent (1><<0)
#define DvPitch (1><<0)
#define DvDuration (1><<0)
#define DvLed (1><<0)
#define DvLedMode (1><<0)
#define DvKey (1><<0)
#define DvAutoRepeatMode (1><<0)
Feedback class
PtrFeedback
controls feedbacks equivalent to those provided by the core pointer using the
PtrFeedbackControl
structure, which is defined as follows:
typedef struct {
XID class;
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackControl;
Which values are modified depends on the valuemask passed.
Valid masks are as follows:
#define DvAccelnum (1L<<0)
#define DvAccelDenom (1L<<1)
#define DvThreshold (1L<<2)
The acceleration, expressed as a fraction, is a multiplier for movement.
For example,
specifying 3/1 means that the device moves three times as fast as normal.
The fraction may be rounded arbitrarily by the X server.
Acceleration takes effect only if the device moves more than threshold pixels at
once and applies only to the amount beyond the value in the threshold argument.
Setting a value to -1 restores the default.
The values of the accelNumerator and threshold fields must be nonzero for
the pointer values to be set.
Otherwise, the parameters will be unchanged.
Negative values generate a
BadValue
error, as does a zero value
for the accelDenominator field.
This request fails with a
BadMatch
error if the specified device is not currently reporting relative motion.
If a device that is capable of reporting both relative and absolute motion
has its mode changed from
Relative
to
Absolute
by an
request, valuator control values
will be ignored by the server while the device is in that mode.
Feedback class
IntegerFeedback
controls integer feedbacks displayed on input devices and are
reported via the
IntegerFeedbackControl
structure, which is defined as follows:
typedef struct {
XID class;
int length;
XID id;
int int_to_display;
} XIntegerFeedbackControl;
Valid masks are as follows:
#define DvInteger (1L<<0)
Feedback class
StringFeedback
controls string feedbacks displayed on input devices
and reported via the
StringFeedbackControl
structure, which is defined as follows:
typedef struct {
XID class;
int length;
XID id;
int num_keysyms;
KeySym *syms_to_display;
} XStringFeedbackControl;
Valid masks are as follows:
#define DvString (1L<<0)
Feedback class
BellFeedback
controls a bell on an input device and is reported via the
BellFeedbackControl
structure, which is defined as follows:
typedef struct {
XID class;
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackControl;
Valid masks are as follows:
#define DvPercent (1L<<1)
#define DvPitch (1L<<2)
#define DvDuration (1L<<3)
Feedback class
LedFeedback
controls lights on an input device and are reported via the
LedFeedbackControl
structure, which is defined as follows:
typedef struct {
XID class;
int length;
XID id;
int led_mask;
int led_values;
} XLedFeedbackControl;
Valid masks are as follows:
#define DvLed (1L<<4)
#define DvLedMode (1L<<5)
can generate
BadDevice ,
BadFeedBack ,
BadMatch ,
and
BadValue
errors.
Ringing a Bell on an Input Device
To ring a bell on an extension input device, use
XDeviceBell .
int XDeviceBell
Display *display
XDevice *device
XIDfeedbackclass, feedbackid
int percent
display
Specifies the connection to the X server.
device
Specifies the desired device.
feedbackclass
Specifies the feedbackclass. Valid values are
KbdFeedbackClass
and
BellFeedbackClass .
feedbackid
Specifies the ID of the feedback that has the bell.
percent
Specifies the volume in the range -100 (quiet) to 100 percent (loud).
is analogous to the core
XBell
function. It rings the specified bell on the specified input device feedback,
using the specified volume.
The specified volume is relative to the base volume for the feedback.
If the value for the percent argument is not in the range -100 to 100
inclusive, a
BadValue
error results.
The volume at which the bell rings when the percent argument is nonnegative is:
base - [(base * percent) / 100] + percent
The volume at which the bell rings
when the percent argument is negative is:
base + [(base * percent) / 100]
To change the base volume of the bell, use
XChangeFeedbackControl .
can generate
BadDevice
and
BadValue
errors.
Controlling Device Encoding
To get the key mapping of an extension device that supports input class
Keys ,
use
XGetDeviceKeyMapping .
KeySym * XGetDeviceKeyMapping
Display *display
XDevice *device
KeyCode first_keycode_wanted
int keycode_count
int *keysyms_per_keycode_return
display
Specifies the connection to the X server.
device
Specifies the desired device.
first_keycode_wanted
Specifies the first keycode that is to be returned.
keycode_count
Specifies the number of keycodes that are to be returned.
keysyms_per_keycode_return
Returns the number of keysyms per keycode.
is analogous to the core
XGetKeyboardMapping
function.
It returns the symbols for the specified number of keycodes for the
specified extension device.
returns the symbols for the
specified number of keycodes for the
specified extension device, starting with the specified keycode.
The first_keycode_wanted must be greater than or equal to
min-keycode as returned
by the
request (else a
BadValue
error results). The following value:
first_keycode_wanted + keycode_count - 1
must be less than or equal to max-keycode as returned
by the
request (else a
BadValue
error results).
The number of elements in the keysyms list is as follows:
keycode_count * keysyms_per_keycode_return
And KEYSYM number N (counting from zero) for keycode K has an index
(counting from zero), in keysyms, of the following:
(K - first_keycode_wanted) * keysyms_per_keycode_return + N
The keysyms_per_keycode_return value is chosen arbitrarily by the server
to be large enough to report all requested symbols.
A special KEYSYM value of
NoSymbol
is used to fill in unused elements for individual keycodes.
To free the data returned by this function, use
XFree.
If the specified device has not first been opened by this client via
XOpenDevice ,
this request will fail with a
BadDevice
error.
If that device does not support input class
Keys ,
this request will fail with a
BadMatch
error.
can generate
BadDevice ,
BadMatch ,
and
BadValue
errors.
To change the keyboard mapping of an extension device that supports input class
Keys ,
use
XChangeDeviceKeyMapping .
int XChangeDeviceKeyMapping
Display *display
XDevice *device
int first_keycode
int keysyms_per_keycode
KeySym *keysyms
int num_codes
display
Specifies the connection to the X server.
device
Specifies the desired device.
first_keycode
Specifies the first keycode that is to be changed.
keysyms_per_keycode
Specifies the keysyms that are to be used.
keysyms
Specifies a pointer to an array of keysyms.
num_codes
Specifies the number of keycodes that are to be changed.
is analogous to the core
XChangeKeyboardMapping
function.
It defines the symbols for the specified number of keycodes for the
specified extension keyboard device.
If the specified device has not first been opened by this client via
XOpenDevice ,
this request will fail with a
BadDevice
error.
If the specified device does not support input class
Keys ,
this request will fail with a
BadMatch
error.
The number of elements in the keysyms list must be a multiple of
keysyms_per_keycode. Otherwise,
generates a
BadLength
error.
The specified first_keycode must be greater than or equal to
the min_keycode value returned by the
ListInputDevices
request, or this request will fail with a
BadValue
error. In addition, if the following expression is not less than
the max_keycode value returned by the
ListInputDevices
request, the request will fail with a
BadValue
error:
first_keycode + (num_codes / keysyms_per_keycode) - 1
can generate
BadAlloc ,
BadDevice ,
BadMatch ,
and
BadValue
errors.
To obtain the keycodes that are used as modifiers on an
extension device that supports input class
Keys ,
use
XGetDeviceModifierMapping .
XModifierKeymap * XGetDeviceModifierMapping
Display *display
XDevice *device
display
Specifies the connection to the X server.
device
Specifies the desired device.
is analogous to the core
XGetModifierMapping
function.
The
function returns a newly created
XModifierKeymap
structure that contains the keys being used as
modifiers for the specified device.
The structure should be freed after use with
XFreeModifierMapping .
If only zero values appear in the set for any modifier,
that modifier is disabled.
can generate
BadDevice
and
BadMatch
errors.
To set which keycodes are to be used as modifiers for an extension device, use
XSetDeviceModifierMapping .
int XSetDeviceModifierMapping
Display *display
XDevice *device
XModifierKeymap *modmap
display
Specifies the connection to the X server.
device
Specifies the desired device.
modmap
Specifies a pointer to the
XModifierKeymap
structure.
is analogous to the core
XSetModifierMapping
function.
The
function specifies the keycodes of the keys, if any,
that are to be used as modifiers. A zero value means
that no key should be used. No two arguments can have the same nonzero
keycode value. Otherwise,
generates a
BadValue
error.
There are eight modifiers, and the modifiermap member of the
XModifierKeymap
structure contains eight sets of max_keypermod
keycodes, one for each modifier in the order
Shift ,
Lock ,
Control ,
Mod1 ,
Mod2 ,
Mod3 ,
Mod4 ,
and
Mod5 .
Only nonzero keycodes have meaning in each set, and zero keycodes
are ignored.
In addition, all of the nonzero keycodes must be in the range specified by
min_keycode and max_keycode reported by the
function.
Otherwise,
XSetModifierMapping
generates a
BadValue
error.
No keycode may appear twice in the entire map.
Otherwise, it generates a
BadValue
error.
A X server can impose restrictions on how modifiers can be changed,
for example,
if certain keys do not generate up transitions in hardware or if multiple
modifier keys are not supported.
If some such restriction is violated,
the status reply is
MappingFailed ,
and none of the modifiers are changed.
If the new keycodes specified for a modifier differ from those
currently defined and any (current or new) keys for that modifier are
in the logically down state,
the status reply is
MappingBusy ,
and none of the modifiers are changed.
XSetModifierMapping
generates a
DeviceMappingNotify
event on a
MappingSuccess
status.
can generate
BadAlloc ,
BadDevice ,
BadMatch ,
and
BadValue
errors.
Controlling Button Mapping
To set the mapping of the buttons on an extension device, use
XSetDeviceButtonMapping .
int XSetDeviceButtonMapping
Display *display
XDevice *device
unsignedchar map[]
int nmap
display
Specifies the connection to the X server.
device
Specifies the desired device.
map
Specifies the mapping list.
nmap
Specifies the number of items in the mapping list.
sets the mapping of the buttons on an extension device.
If it succeeds, the X server generates a
DeviceMappingNotify
event, and
returns
MappingSuccess .
Elements of the list are indexed starting from one.
The length of the list must be the same as
would return, or a
BadValue
error results.
The index is a button number, and the element of the list
defines the effective number.
A zero element disables a button, and elements are not restricted in
value by the number of physical buttons.
However, no two elements can have the same nonzero value, or a
BadValue
error results.
If any of the buttons to be altered are logically in the down state,
returns
MappingBusy ,
and the mapping is not changed.
can generate
BadDevice ,
BadMatch ,
and
BadValue
errors.
To get the button mapping, use
XGetDeviceButtonMapping .
int XGetDeviceButtonMapping
Display *display
XDevice *device
unsignedchar map_return[]
int nmap
display
Specifies the connection to the X server.
device
Specifies the desired device.
map_return
Specifies the mapping list.
nmap
Specifies the number of items in the mapping list.
returns the current mapping of the specified extension device.
Elements of the list are indexed starting from one.
returns the number of physical buttons actually on the pointer.
The nominal mapping for the buttons is the identity mapping: map[i]=i.
The nmap argument specifies the length of the array where the button
mapping is returned, and only the first nmap elements are returned
in map_return.
can generate
BadDevice
and
BadMatch
errors.
Obtaining the State of a Device
To obtain information that describes the state of the keys, buttons, and
valuators of an extension device, use
XQueryDeviceState .
XDeviceState * XQueryDeviceState
Display *display
XDevice *device
display
Specifies the connection to the X server.
device
Specifies the desired device.
returns a pointer to an
XDeviceState
structure, which points to a list of
structures that describe the state of the keys, buttons, and valuators
on the device:
typedef struct {
XID device_id;
int num_classes;
XInputClass *data;
} XDeviceState;
The structures are of variable length, but the first
two members are common to all and are as follows:
typedef struct {
unsigned char class;
unsigned char length;
} XInputClass;
The class member contains a class identifier. This identifier can be
compared with constants defined in the file
< X11/extensions/XI.h >.
Currently defined constants are:
KeyClass ,
ButtonClass ,
and
ValuatorClass .
The length member contains the length of the structure and can be used
by clients to traverse the list.
The
XValuatorState
structure describes the current state of the valuators
on the device.
The num_valuators member contains the number of valuators
on the device.
The mode member is a mask whose bits report the data mode
and other state information for the device.
The following bits are currently defined:
DeviceMode 1 << 0 Relative = 0, Absolute = 1
ProximityState 1 << 1 InProximity = 0, OutOfProximity = 1
The valuators member contains a pointer to an array of integers that
describe the current value of the valuators.
If the mode is
Relative ,
these values are undefined.
typedef struct {
unsigned char class;
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int *valuators;
} XValuatorState;
The
XKeyState
structure describes the current state of the keys
on the device. Byte N (from 0) contains the
bits for key 8N to 8N + 7 with the least significant bit in the
byte representing key 8N.
typedef struct {
unsigned char class;
unsigned char length;
short num_keys;
char keys[32];
} XKeyState;
The
XButtonState
structure describes the current state of the buttons
on the device. Byte N (from 0) contains the bits for button 8N to 8N + 7
with the least significant bit in the
byte representing button 8N.
typedef struct {
unsigned char class;
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonState;
can generate
BadDevice
errors.
To free the data returned by this function, use
XFreeDeviceState .
void XFreeDeviceState
XDeviceState *state
state
Specifies the pointer to the
XDeviceState
data returned by a previous call to
XQueryDeviceState .
frees the device state data.
Events
The input extension creates input events analogous to the core input events.
These extension input events are generated by manipulating one of the
extension input devices.
The remainder of this section discusses the following X Input Extension
event topics:
Event types
Event classes
Event structures
Event Types
Event types are integer numbers that a client can use to determine what
kind of event it has received. The client compares the type field of
the event structure with known event types to make this determination.
The core input event types are constants and are defined in the header file
< X11/X.h >.
Extension event types are not constants. Instead, they
are dynamically allocated by the extension's request to the X server
when the extension is initialized. Because of this, extension event
types must be obtained by the client from the server.
The client program determines the event type for an extension event by using
the information returned by the
request.
This type can then be used for comparison with the type field
of events received by the client.
Extension events propagate up the window hierarchy in the same manner
as core events. If a window is not interested in an extension event,
it usually propagates to the closest ancestor that is interested,
unless the dont_propagate list prohibits it.
Grabs of extension devices may alter the set of windows that receive a particular
extension event.
The following table lists the event category and its associated event
type or types.
Event Category
Event Type
Device key
DeviceKeyPress
DeviceKeyRelease
Device motion
DeviceButtonPress
DeviceButtonRelease
DeviceMotionNotify
Device input focus
DeviceFocusIn
DeviceFocusOut
Device state notification
DeviceStateNotify
Device proximity
ProximityIn
ProximityOut
Device mapping
DeviceMappingNotify
Device change
ChangeDeviceNotify
Event Classes
Event classes are integer numbers that are used in the same way as the
core event masks. They are used by a client program to indicate to the
server which events that client program wishes to receive.
The core input event masks are constants and are defined in the header file
< X11/X.h >.
Extension event classes are not constants. Instead, they are dynamically
allocated by the extension's request to the X server
when the extension is initialized. Because of this, extension event
classes must be obtained by the client from the server.
The event class for an extension event and device is obtained from
information returned by the
function.
This class can then be used in an
request to ask that events of that type from that device be sent to
the client program.
For
DeviceButtonPress
events, the client may specify whether
or not an implicit passive grab should be done when the button is
pressed. If the client wants to guarantee that it will receive a
DeviceButtonRelease
event for each
DeviceButtonPress
event it receives, it should specify the
DeviceButtonPressGrab
class in addition to the
DeviceButtonPress
class.
This restricts the client in that only one client at a time
may request
DeviceButtonPress
events from the same device and
window if any client specifies this class.
If any client has specified the
DeviceButtonPressGrab
class, any requests by any other client that specify the same device
and window and specify either
DeviceButtonPress
or
DeviceButtonPressGrab
will cause an
Access
error to be generated.
If only the
DeviceButtonPress
class is specified, no implicit passive grab will be done when a button
is pressed on the device.
Multiple clients may use this class to specify the same device and
window combination.
The client may also select
DeviceMotion
events only when a button is down.
It does this by specifying the event classes
DeviceButton1Motion
through
DeviceButton5Motion .
An input device will support only
as many button motion classes as it has buttons.
Event Structures
Each extension event type has a corresponding structure declared in
< X11/extensions/XInput.h >.
All event structures have the following common members:
type
Set to the event type number that uniquely identifies it. For example,
when the X server reports a
DeviceKeyPress
event to a client application, it sends an
XDeviceKeyPressEvent
structure.
serial
Set from the serial number reported in the protocol but expanded from the
16-bit least significant bits to a full 32-bit value.
send_event
Set to
True
if the event came from an
XSendEvent
request.
display
Set to a pointer to a structure that defines the display
on which the event was read.
Extension event structures report the current position of the X pointer.
In addition, if the device reports motion data and is reporting absolute data,
the current value of any valuators the device contains is also reported.
Device Key Events
Key events from extension devices contain all the information that is
contained in a key event from the X keyboard. In addition, they contain
a device ID and report the current value of any valuators on the device,
if that device is reporting absolute data.
If data for more than six valuators is being reported, more than one
key event will be sent.
The axes_count member contains the number of axes that are being
reported. The server sends as many of these events as are
needed to report the device data. Each event contains the total number
of axes reported in the axes_count member and the first axis reported
in the current event in the first_axis member.
If the device supports input class
Valuators ,
but is not reporting absolute mode data,
the axes_count member contains zero (0).
The location reported in
the x, y and x_root, y_root members is the location of the core X pointer.
The
XDeviceKeyEvent
structure is defined as follows:
typedef struct {
int type; /* of event */
unsigned long serial; /* # of last request processed */
Bool send_event; /* true if from SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
unsigned int keycode; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceKeyEvent;
typedef XDeviceKeyEvent XDeviceKeyPressedEvent;
typedef XDeviceKeyEvent XDeviceKeyReleasedEvent;
Device Button Events
Button events from extension devices contain all the information that is
contained in a button event from the X pointer. In addition, they contain
a device ID and report the current value of any valuators on the device
if that device is reporting absolute data.
If data for more than six valuators is being reported, more than one
button event may be sent.
The axes_count member contains the number of axes that are being
reported. The server sends as many of these events as are
needed to report the device data. Each event contains the total number
of axes reported in the axes_count member and the first axis reported
in the current event in the first_axis member.
If the device supports input class
Valuators ,
but is not reporting absolute mode data,
the axes_count member contains zero (0).
The location reported in
the x, y and x_root, y_root members is the location of the core X pointer.
typedef struct {
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window that the event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
unsigned int button; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceButtonEvent;
typedef XDeviceButtonEvent XDeviceButtonPressedEvent;
typedef XDeviceButtonEvent XDeviceButtonReleasedEvent;
Device Motion Events
Motion events from extension devices contain all the information that is
contained in a motion event from the X pointer. In addition, they contain
a device ID and report the current value of any valuators on the device.
The location reported in
the x, y and x_root, y_root members is the location of the core X pointer,
and so is 2-dimensional.
Extension motion devices may report motion data for a variable number of
axes.
The axes_count member contains the number of axes that are being
reported. The server sends as many of these events as are
needed to report the device data. Each event contains the total number
of axes reported in the axes_count member and the first axis reported
in the current event in the first_axis member.
typedef struct {
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window that the event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
char is_hint; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceMotionEvent;
Device Focus Events
These events are equivalent to the core focus events.
They contain the same information, with the addition
of a device ID to identify which device has had a focus change,
and a timestamp.
DeviceFocusIn
and
DeviceFocusOut
events are generated for
focus changes of extension devices in the same manner as core focus
events are generated.
typedef struct {
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window it is reported relative to */
XID deviceid;
int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
int detail;
/*
* NotifyAncestor, NotifyVirtual, NotifyInferior,
* NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
* NotifyPointerRoot, NotifyDetailNone
*/
Time time;
} XDeviceFocusChangeEvent;
typedef XDeviceFocusChangeEvent XDeviceFocusInEvent;
typedef XDeviceFocusChangeEvent XDeviceFocusOutEvent;
Device StateNotify Event
This event is analogous to the core keymap event but
reports the current state of the device for each
input class that it supports.
It is generated after every
DeviceFocusIn
event and
EnterNotify
event and is delivered to clients who have selected
XDeviceStateNotify
events.
If the device supports input class
Valuators ,
the mode member in the
XValuatorStatus
structure is a bitmask that reports the device mode,
proximity state, and other state information.
The following bits are currently defined:
0x01 Relative = 0, Absolute = 1
0x02 InProximity = 0, OutOfProximity = 1
If the device supports more valuators than can be reported in a single
XEvent ,
multiple
XDeviceStateNotify
events will be generated.
typedef struct {
unsigned char class;
unsigned char length;
} XInputClass;
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window;
XID deviceid;
Time time;
int num_classes;
char data[64];
} XDeviceStateNotifyEvent;
typedef struct {
unsigned char class;
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int valuators[6];
} XValuatorStatus;
typedef struct {
unsigned char class;
unsigned char length;
short num_keys;
char keys[32];
} XKeyStatus;
typedef struct {
unsigned char class;
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonStatus;
Device Mapping Event
This event is equivalent to the core
MappingNotify
event.
It notifies client programs when the mapping of keys,
modifiers, or buttons on an extension device has changed.
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
Window window;
XID deviceid;
Time time;
int request;
int first_keycode;
int count;
} XDeviceMappingEvent;
ChangeDeviceNotify Event
This event has no equivalent in the core protocol. It notifies client
programs when one of the core devices has been changed.
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
Window window;
XID deviceid;
Time time;
int request;
} XChangeDeviceNotifyEvent;
Proximity Events
These events have no equivalent in the core protocol. Some input
devices such as graphics tablets or touchscreens may send these
events to indicate that a stylus has moved into or out of contact
with a positional sensing surface.
The event contains the current value of any valuators on the device
if that device is reporting absolute data.
If data for more than six valuators is being reported, more than one
proximity event may be sent.
The axes_count member contains the number of axes that are being
reported. The server sends as many of these events as are
needed to report the device data. Each event contains the total number
of axes reported in the axes_count member and the first axis reported
in the current event in the first_axis member.
If the device supports input class
Valuators ,
but is not reporting absolute mode data,
the axes_count member contains zero (0).
typedef struct {
int type; /* ProximityIn or ProximityOut */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window;
XID deviceid;
Window root;
Window subwindow;
Time time;
int x, y;
int x_root, y_root;
unsigned int state;
Bool same_screen;
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XProximityNotifyEvent;
typedef XProximityNotifyEvent XProximityInEvent;
typedef XProximityNotifyEvent XProximityOutEvent;
Event Handling Functions
This section discusses the X Input Extension
event handling functions that allow you to:
Determine the extension version
List the available devices
Enable and disable extension devices
Change the mode of a device
Initialize valuators on an input device
Get input device controls
Change input device controls
Select extension device events
Determine selected device events
Control event propogation
Send an event
Get motion history
Determining the Extension Version
XExtensionVersion * XGetExtensionVersion
Display *display
char *name
display
Specifies the connection to the X server.
name
Specifies the name of the desired extension.
allows a client to determine whether a server supports
the desired version of the input extension.
The
XExtensionVersion
structure returns information about the version of the extension
supported by the server and is defined as follows:
typedef struct {
Bool present;
short major_version;
short minor_version;
} XExtensionVersion;
The major and minor versions can be compared with constants defined in
the header file
< X11/extensions/XI.h >.
Each version is a superset of the previous versions.
You should use
XFree.
to free the data returned by this function.
Listing Available Devices
A client program that wishes to access a specific device
must first determine whether that device is connected to the X server. This
is done through the
function, which will return a list of all devices that can be opened
by the X server. The client program can use one
of the names defined in the
< X11/extensions/XI.h >
header file in an
XInternAtom
request to determine the device type of the desired device. This type
can then be compared with the device types returned by the
request.
XDeviceInfo * XListInputDevices
Display *display
int *ndevices
display
Specifies the connection to the X server.
ndevices
Specifies the address of a variable into which the server
can return the number of input devices available to the X server.
allows a client to determine which devices
are available for X input and information about those devices.
An array of
XDeviceInfo
structures is returned, with one element in the array for each device.
The number of devices is returned in the ndevices argument.
The X pointer device and X keyboard device are reported, as well as
all available extension input devices. The use member of the
XDeviceInfo
structure specifies the current use of the device.
If the value of this member is
IsXPointer ,
the device is the X pointer device. If the value is
IsXKeyboard ,
the device is the X keyboard device. If the value is
IsXExtensionDevice ,
the device is available for use as an extension input device.
Each
XDeviceInfo
entry contains a pointer to a list of structures
that describe the characteristics of each class
of input supported by that device. The num_classes member
contains the number of entries in that list.
If the device supports input class
Valuators ,
one of the structures pointed to by the
XDeviceInfo
structure will be an
XValuatorInfo
structure. The axes member of that structure
contains the address of an array of
XAxisInfo
structures.
There is one element in this array for each axis of motion
reported by the device. The number of elements in this
array is contained in the num_axes element of the
XValuatorInfo
structure.
The size of the motion buffer for the device is
reported in the motion_buffer member of the
XValuatorInfo
structure.
The
XDeviceInfo
structure is defined as follows:
typedef struct _XDeviceInfo {
XID id;
Atom type;
char *name;
int num_classes;
int use;
XAnyClassPtr inputclassinfo;
} XDeviceInfo;
The structures pointed to by the
XDeviceInfo
structure are defined as follows:
typedef struct _XKeyInfo {
XID class;
int length;
unsigned short min_keycode;
unsigned short max_keycode;
unsigned short num_keys;
} XKeyInfo;
typedef struct _XButtonInfo {
XID class;
int length;
short num_buttons;
} XButtonInfo;
typedef struct _XValuatorInfo {
XID class;
int length;
unsigned char num_axes;
unsigned char mode;
unsigned long motion_buffer;
XAxisInfoPtr axes;
} XValuatorInfo;
The
XAxisInfo
structure pointed to by the
XValuatorInfo
structure is defined as follows:
typedef struct _XAxisInfo {
int resolution;
int min_value;
int max_value;
} XAxisInfo;
The following atom names are defined in the
< X11/extensions/XI.h >
header file.
MOUSE QUADRATURE
TABLET SPACEBALL
KEYBOARD DATAGLOVE
TOUCHSCREEN EYETRACKER
TOUCHPAD CURSORKEYS
BUTTONBOX FOOTMOUSE
BARCODE ID_MODULE
KNOB_BOX ONE_KNOB
TRACKBALL NINE_KNOB\s+1
These names can be used in an
XInternAtom
request to return an atom that can be used for comparison
with the type member of the
XDeviceInfo
structure.
returns NULL if there are no input devices to list.
To free the data returned by
XListInputDevices ,
use
XFreeDeviceList .
void XFreeDeviceList
XDeviceInfo *list
list
Specifies the pointer to the
XDeviceInfo
array returned by a previous call to
XListInputDevices .
frees the list of input device information.
Enabling and Disabling Extension Devices
Each client program that wishes to access an extension device must request
that the server open that device by calling the
function.
XDevice * XOpenDevice
Display *display
XID device_id
display
Specifies the connection to the X server.
device_id
Specifies the ID that uniquely identifies the device to be opened.
This ID is obtained from the
request.
opens the device for the requesting client and, on success, returns an
XDevice
structure, which is defined as follows:
typedef struct {
XID device_id;
int num_classes;
XInputClassInfo *classes;
} XDevice;
The
XDevice
structure contains a pointer to an array of
XInputClassInfo
structures. Each element in that array
contains information about events of a particular input class supported
by the input device.
The
XInputClassInfo
structure is defined as follows:
typedef struct {
unsigned char input_class;
unsigned char event_type_base;
} XInputClassInfo;
A client program can determine the event
type and event class for a given event by using macros defined by the
input extension. The name of the macro corresponds to the desired event,
and the macro is passed the structure that describes the device from which
input is desired, for example:
DeviceKeyPress(XDevice *device, event_type, event_class)
The macro will fill in the values of the event class to be used in an
request to select the event and the event type to be used in comparing
with the event types of events received via
XNextEvent.
can generate
BadDevice
errors.
Before terminating, the client program should request that the server close
the device by calling the
function.
int XCloseDevice
Display *display
XDevice *device
display
Specifies the connection to the X server.
device
Specifies the device to be closed.
closes the device for the requesting client and frees the associated
XDevice
structure.
A client may open the same extension device more than once. Requests
after the first successful one return an additional
XDevice
structure
with the same information as the first, but otherwise have no effect.
A single
request will terminate that client's access to the device.
Closing a device releases any active or passive grabs the requesting client
has established. If the device is frozen only by an active grab of the
requesting client, any queued events are released.
If a client program terminates without closing a device, the server will
automatically close that device on behalf of the client. This does not
affect any other clients that may be accessing that device.
can generate
BadDevice
errors.
Changing the Mode of a Device
Some devices are capable of reporting either relative or absolute motion
data.
To change the mode of a device from relative to absolute, use
XSetDeviceMode .
int XSetDeviceMode
Display *display
XDevice *device
int mode
display
Specifies the connection to the X server.
device
Specifies the device whose mode should be changed.
mode
Specifies the mode. You can pass
Absolute
or
Relative .
allows a client to request the server to change the mode of a
device that is capable of reporting either absolute positional data or relative
motion data. If the device is invalid or if the client has not previously
requested that the server open the device via an
request, this request will fail with a
BadDevice
error.
If the device does not support input class
Valuators
or if it is not capable of reporting the specified mode,
the request will fail with a
BadMatch
error.
This request will fail and return
DeviceBusy
if another client has already opened the device and requested a different mode.
can generate
BadDevice ,
BadMatch ,
BadMode ,
and
DeviceBusy
errors.
Initializing Valuators on an Input Device
Some devices that report absolute positional data can be initialized to a
starting value. Devices that are capable of reporting relative motion or
absolute positional data may require that their valuators be initialized
to a starting value after the mode of the device is changed to
Absolute .
To initialize the valuators on such a device, use
XSetDeviceValuators .
Status XSetDeviceValuators
Display *display
XDevice *device
int*valuators,first_valuator, num_valuators
display
Specifies the connection to the X server.
device
Specifies the device whose valuators should be initialized.
valuators
Specifies the values to which each valuator should be set.
first_valuator
Specifies the first valuator to be set.
num_valuators
Specifies the number of valuators to be set.
initializes the specified valuators on the specified extension
input device. Valuators are numbered beginning with zero. Only the valuators
in the range specified by first_valuator and num_valuators are set.
A
BadValue
error results if the number of valuators supported by the device
is less than the following expression:
first_valuator + num_valuators
If the request succeeds,
Success
is returned. If the specified device is grabbed by some other client,
the request will fail and a status of
AlreadyGrabbed
will be returned.
can generate
BadDevice ,
BadLength ,
BadMatch ,
and
BadValue
errors.
Getting Input Device Controls
Some input devices support various configuration controls
that can be queried or changed by clients. The set of supported
controls will vary from one input device to another. Requests
to manipulate these controls will fail if either the target
X server or the target input device does not support the
requested device control.
Each device control has a unique identifier. Information
passed with each device control varies in length and is mapped
by data structures unique to that device control.
To query a device control, use
XGetDeviceControl .
XDeviceControl * XGetDeviceControl
Display *display
XDevice *device
int control
display
Specifies the connection to the X server.
device
Specifies the device whose configuration control status is to be returned.
control
Identifies the specific device control to be queried.
returns the current state of the specified device control.
If the target X server does not support that device control, a
BadValue
error is returned.
If the specified device does not support that device control, a
BadMatch
error
is returned.
If the request is successful, a pointer to a generic
XDeviceState
structure is returned. The information returned varies according
to the specified control and is mapped by a structure appropriate
for that control.
The first two members are common to all device controls
and are defined as follows:
typedef struct {
XID control;
int length;
} XDeviceState;
\fP
The control may be compared to constants defined in the file
< X11/extensions/XI.h >.
Currently defined device controls include DEVICE_RESOLUTION.
The information returned for the DEVICE_RESOLUTION control is
defined in the
XDeviceResolutionState
structure, which is defined as follows:
typedef struct {
XID control;
int length;
int num_valuators;
int *resolutions;
int *min_resolutions;
int *max_resolutions;
} XDeviceResolutionState;
This device control returns a list of valuators and the range of
valid resolutions allowed for each. Valuators are numbered
beginning with zero (0). Resolutions for all valuators on the device are
returned. For each valuator i on the device, resolutions[i] returns
the current setting of the resolution, min_resolutions[i] returns
the minimum valid setting, and max_resolutions[i] returns the
maximum valid setting.
When this control is specified,
fails with a
BadMatch
error if the specified device has no valuators.
can generate
BadMatch
and
BadValue
errors.
Changing Input Device Controls
Some input devices support various configuration controls
that can be changed by clients. Typically, this would be
done to initialize the device to a known state or configuration.
The set of supported controls will vary from one input device
to another. Requests to manipulate these controls will fail if
either the target X server or the target input device does not
support the requested device control. Setting the device control
will also fail if the target input device is grabbed by another
client or is open by another client and has been set to a conflicting
state.
Each device control has a unique identifier. Information
passed with each device control varies in length and is mapped
by data structures unique to that device control.
To change a device control, use
XChangeDeviceControl .
Status XChangeDeviceControl
Display *display
XDevice *device
int control
XDeviceControl *value
display
Specifies the connection to the X server.
device
Specifies the device whose configuration control status is to be modified.
control
Identifies the specific device control to be changed.
value
Specifies a pointer to an
XDeviceControl
structure that describes which control is to be changed
and how it is to be changed.
changes the current state of the specified device control.
If the target X server does not support that device control, a
BadValue
error is returned.
If the specified device does not support that device control, a
BadMatch
error is returned.
If another client has the target device grabbed, a status of
AlreadyGrabbed
is returned.
If another client has the device open and has set it to a
conflicting state, a status of
DeviceBusy
is returned.
If the request fails for any reason, the device control will not
be changed.
If the request is successful, the device control will be changed
and a status of
Success
is returned.
The information passed varies according to the specified control
and is mapped by a structure appropriate for that control.
The first two members are common to all device controls:
typedef struct {
XID control;
int length;
} XDeviceControl;
The control may be set using constants defined in the
< X11/extensions/XI.h >
header file.
Currently defined device controls include DEVICE_RESOLUTION.
The information that can be changed by the DEVICE_RESOLUTION
control is defined in the
XDeviceResolutionControl
structure, which is defined as follows:
typedef struct {
XID control;
int length;
int first_valuator;
int num_valuators;
int *resolutions;
} XDeviceResolutionControl;
This device control changes the resolution of the specified
valuators on the specified extension input device. Valuators
are numbered beginning with zero. Only the valuators in the range
specified by first_valuator and num_valuators are set. A value
of -1 in the resolutions list indicates that the resolution for
this valuator is not to be changed. The num_valuators member
specifies the number of valuators in the resolutions list.
When this control is specified,
fails with a
BadMatch
error if the specified device has no valuators.
If a resolution is specified that is not within the range of valid values
(as returned by
XGetDeviceControl ),
fails with a
BadValue
error.
A
BadValue
error results if the number of valuators supported by the device
is less than the following expression:
first_valuator + num_valuators,
can generate
BadMatch
and
BadValue
errors.
Selecting Extension Device Events
To select device input events, use
XSelectExtensionEvent .
The parameters passed are a pointer to
a list of classes that define the desired event types and devices, a count
of the number of elements in the list, and the ID of the window from which
events are desired.
int XSelectExtensionEvent
Display *display
Window window
XEventClass *event_list
int event_count
display
Specifies the connection to the X server.
window
Specifies the ID of the window from which the client wishes to receive events.
event_list
Specifies a pointer to an array of event classes
that specify which events are desired.
event_count
Specifies the number of elements in the event_list.
requests the server to send events that match the events and
devices described by the event list and that come from the requested
window.
The elements of the
XEventClass
array are the event_class values
obtained by invoking a macro with the pointer to an
XDevice
structure returned by the
request.
For example, the
DeviceKeyPress
macro would return the
XEventClass
for
DeviceKeyPress
events from the specified device if it were invoked in the following form:
DeviceKeyPress (XDevice *device, event_type, event_class)
Macros are defined for the following event classes:
DeviceKeyPress
DeviceKeyRelease
DeviceButtonPress
DeviceButtonRelease
DeviceMotionNotify
DeviceFocusIn
DeviceFocusOut
ProximityIn
ProximityOut
DeviceStateNotify
DeviceMappingNotify
ChangeDeviceNotify
DevicePointerMotionHint
DeviceButton1Motion
DeviceButton2Motion
DeviceButton3Motion,
DeviceButton4Motion
DeviceButton5Motion
DeviceButtonMotion,
DeviceOwnerGrabButton
DeviceButtonPressGrab
To get the next available event from within a client program, use the core
XNextEvent
function. This returns the next event whether it
came from a core device or an extension device.
Succeeding
requests using event classes
for the same device as was specified on a previous request will replace
the previous set of selected events from that device with the new set.
can generate
BadAccess ,
BadClass ,
BadLength ,
and
BadWindow
errors.
Determining Selected Device Events
To determine which extension events are currently selected from a given
window, use
XGetSelectedExtensionEvents .
int XGetSelectedExtensionEvents
Display *display
Window window
int *this_client_count
XEventClass **this_client
int *all_clients_count
XEventClass **all_clients
display
Specifies the connection to the X server.
window
Specifies the ID of the window from which the client wishes to receive events.
this_client_count
Returns the number of elements in the this_client list.
this_client
Returns a list of
XEventClasses
that specify which events are
selected by this client.
all_clients_count
Returns the number of elements in the all_clients list.
all_clients
Returns a list of
XEventClasses
that specify which events are
selected by all clients.
returns pointers to two event class arrays.
One lists the extension events selected by this client from
the specified window. The other lists the extension events selected by
all clients from the specified window. This information is analogous
to that returned in your_event_mask and all_event_masks of the
XWindowAttributes
structure when an
XGetWindowAttributes
request is made.
To free the two arrays returned by this function, use
XFree.
can generate
BadWindow
errors.
Controlling Event Propagation
Extension events propagate up the window hierarchy in the same manner
as core events. If a window is not interested in an extension event,
it usually propagates to the closest ancestor that is interested,
unless the dont_propagate list prohibits it.
Grabs of extension devices may alter the set of windows that receive a
particular extension event.
Client programs may control event propagation through the use
of the following two functions:
and
XGetDeviceDontPropagateList .
int XChangeDeviceDontPropagateList
Display *display
Window window
int event_count
XEventClass *events
int mode
display
Specifies the connection to the X server.
window
Specifies the desired window.
event_count
Specifies the number of elements in the events list.
events
Specifies a pointer to the list of XEventClasses.
mode
Specifies the mode. You can pass
AddToList
or
DeleteFromList .
adds an event to or deletes an event from the do_not_propagate list
of extension events for the specified window.
There is one list per window, and the list remains for the life of the window.
The list is not altered if a client that changed the list terminates.
Suppression of event propagation is not allowed for all events. If a
specified
XEventClass
is invalid because suppression of that event is not allowed, a
BadClass
error results.
can generate
BadClass ,
BadMode ,
and
BadWindow
errors.
XEventClass * XGetDeviceDontPropagateList
Display *display
Window window
int *event_count
display
Specifies the connection to the X server.
window
Specifies the desired window.
event_count
Returns the number of elements in the array returned by this function.
allows a client to determine the do_not_propagate list of extension events
for the specified window.
It returns an array of
XEventClass ,
each
XEventClass
representing a device/event type pair.
To free the data returned by this function, use
XFree.
can generate
BadWindow
errors.
Sending an Event
To send an extension event to another client, use
XSendExtensionEvent .
int XSendExtensionEvent
Display *display
XDevice *device
Window window
Bool propagate
int event_count
XEventClass *event_list
XEvent *event
display
Specifies the connection to the X server.
device
Specifies the device whose ID is recorded in the event.
window
Specifies the destination window ID. You can pass a window ID,
PointerWindow
or
InputFocus .
propagate
Specifies a boolean value that is either
True
or
False .
event_count
Specifies the number of elements in the event_list array.
event_list
Specifies a pointer to an array of
XEventClass .
event
Specifies a pointer to the event that is to be sent.
identifies the destination window, determines which clients should receive
the specified event, and ignores any active grabs.
It requires a list of
XEventClass
to be specified.
These are obtained by opening an input device with the
request.
uses the window argument to identify the destination window as follows:
If you pass
PointerWindow ,
the destination window is the window that contains the pointer.
If you pass
InputFocus
and if the focus window contains the pointer,
the destination window is the window that contains the pointer.
If the focus window does not contain the pointer,
the destination window is the focus window.
To determine which clients should receive the specified events,
uses the propagate argument as follows:
If propagate is
False ,
the event is sent to every client selecting
from the destination window
any of the events specified in the event_list array.
If propagate is
True
and no clients have selected from the destination window
any of the events specified in the event_list array, the destination is
replaced with the closest ancestor of destination for which some client
has selected one of the specified events and for which no intervening
window has that event in its do_not_propagate mask.
If no such window exists,
or if the window is an ancestor of the focus window, and
InputFocus
was originally specified as the destination,
the event is not sent to any clients. Otherwise, the event is reported to every
client selecting on the final destination any of the events specified
in event_list.
The event in the
XEvent
structure must be one of the events defined
by the input extension, so that the X server can correctly byte swap the
contents as necessary. The contents of the event are otherwise unaltered
and unchecked by the X server except to force send_event to
True
in the forwarded event and to set the sequence number in the event correctly.
returns zero if the conversion-to-wire protocol failed;
otherwise, it returns nonzero.
can generate
BadClass ,
BadDevice ,
BadValue ,
and
BadWindow
errors.
Getting Motion History
XDeviceTimeCoord * XGetDeviceMotionEvents
axis_count_return)
Display *display
XDevice *device
Timestart, stop
int *nevents_return
int *mode_return
int *axis_count_return
display
Specifies the connection to the X server.
device
Specifies the desired device.
start
Specifies the start time.
stop
Specifies the stop time.
nevents_return
Returns the number of positions in the motion buffer returned
for this request.
mode_return
Returns the mode of the nevents information.
The mode will be one of the following:
Absolute
or
Relative .
axis_count_return
Returns the number of axes reported in each of the positions returned.
returns all positions in the device's motion history buffer
that fall between the specified start and stop times inclusive.
If the start time is in the future or is later than the stop time,
no positions are returned.
The return type for this function is an
XDeviceTimeCoord
structure, which is defined as follows:
typedef struct {
Time time;
unsigned int *data;
} XDeviceTimeCoord;
The data member is a pointer to an array of data items.
Each item is of type int, and there is one data item
per axis of motion reported by the device.
The number of axes reported by the device is returned in the axis_count variable.
The value of the data items depends on the mode of the device.
The mode is returned in the mode variable. If the
mode is
Absolute ,
the data items are the raw values generated by the device.
These may be scaled by the client program using the
maximum values that the device can generate for each axis of motion
that it reports. The maximum value for each axis is reported in
the max_val member of the
XAxisInfo
structure, which is part of the information returned by the
request.
If the mode is
Relative ,
the data items are the relative values generated by the device.
The client program must choose an initial
position for the device and maintain a current position by
accumulating these relative values.
Consecutive calls to
can return data of different modes, that is, if
some client program has changed the mode of the device via an
request.
can generate
BadDevice
and
BadMatch
errors.
To free the data returned by
XGetDeviceMotionEvents ,
use
XFreeDeviceMotionEvents .
void XFreeDeviceMotionEvents
XDeviceTimeCoord *events
events
Specifies the pointer to the
XDeviceTimeCoord
array returned by a previous call to
XGetDeviceMotionEvents .
frees the specified array of motion information.
Appendix A
The following information is contained in the <X11/extensions/XInput.h>
and <X11/extensions/XI.h> header files:
/* Definitions used by the library and client */
#ifndef _XINPUT_H_
#define _XINPUT_H_
#ifndef _XLIB_H_
#include <X11/Xlib.h>
#endif
#ifndef _XI_H_
#include "XI.h"
#endif
#define _deviceKeyPress 0
#define _deviceKeyRelease 1
#define _deviceButtonPress 0
#define _deviceButtonRelease 1
#define _deviceMotionNotify 0
#define _deviceFocusIn 0
#define _deviceFocusOut 1
#define _proximityIn 0
#define _proximityOut 1
#define _deviceStateNotify 0
#define _deviceMappingNotify 1
#define _changeDeviceNotify 2
#define FindTypeAndClass(d, type, class, classid, offset) \
{ int i; XInputClassInfo *ip; \
type = 0; class = 0; \
for (i=0, ip= ((XDevice *) d)->classes; \
i< ((XDevice *) d)->num_classes; \
i++, ip++) \
if (ip->input_class == classid) \
{type = ip->event_type_base + offset; \
class = ((XDevice *) d)->device_id << 8 | type;}}
#define DeviceKeyPress(d, type, class) \
FindTypeAndClass(d, type, class, KeyClass, _deviceKeyPress)
#define DeviceKeyRelease(d, type, class) \
FindTypeAndClass(d, type, class, KeyClass, _deviceKeyRelease)
#define DeviceButtonPress(d, type, class) \
FindTypeAndClass(d, type, class, ButtonClass, _deviceButtonPress)
#define DeviceButtonRelease(d, type, class) \
FindTypeAndClass(d, type, class, ButtonClass, _deviceButtonRelease)
#define DeviceMotionNotify(d, type, class) \
FindTypeAndClass(d, type, class, ValuatorClass, _deviceMotionNotify)
#define DeviceFocusIn(d, type, class) \
FindTypeAndClass(d, type, class, FocusClass, _deviceFocusIn)
#define DeviceFocusOut(d, type, class) \
FindTypeAndClass(d, type, class, FocusClass, _deviceFocusOut)
#define ProximityIn(d, type, class) \
FindTypeAndClass(d, type, class, ProximityClass, _proximityIn)
#define ProximityOut(d, type, class) \
FindTypeAndClass(d, type, class, ProximityClass, _proximityOut)
#define DeviceStateNotify(d, type, class) \
FindTypeAndClass(d, type, class, OtherClass, _deviceStateNotify)
#define DeviceMappingNotify(d, type, class) \
FindTypeAndClass(d, type, class, OtherClass, _deviceMappingNotify)
#define ChangeDeviceNotify(d, type, class) \
FindTypeAndClass(d, type, class, OtherClass, _changeDeviceNotify)
#define DevicePointerMotionHint(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _devicePointerMotionHint;}
#define DeviceButton1Motion(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _deviceButton1Motion;}
#define DeviceButton2Motion(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _deviceButton2Motion;}
#define DeviceButton3Motion(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _deviceButton3Motion;}
#define DeviceButton4Motion(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _deviceButton4Motion;}
#define DeviceButton5Motion(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _deviceButton5Motion;}
#define DeviceButtonMotion(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _deviceButtonMotion;}
#define DeviceOwnerGrabButton(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _deviceOwnerGrabButton;}
#define DeviceButtonPressGrab(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _deviceButtonGrab;}
#define NoExtensionEvent(d, type, class) \
{ class = ((XDevice *) d)->device_id << 8 | _noExtensionEvent;}
#define BadDevice(dpy, error) _xibaddevice(dpy, &error)
#define BadClass(dpy, error) _xibadclass(dpy, &error)
#define BadEvent(dpy, error) _xibadevent(dpy, &error)
#define BadMode(dpy, error) _xibadmode(dpy, &error)
#define DeviceBusy(dpy, error) _xidevicebusy(dpy, &error)
/***************************************************************
*
* DeviceKey events. These events are sent by input devices that
* support input class Keys.
* The location of the X pointer is reported in the coordinate
* fields of the x,y and x_root,y_root fields.
*
*/
typedef struct
{
int type; /* of event */
unsigned long serial; /* # of last request processed */
Bool send_event; /* true if from SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window event occured on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
unsigned int keycode; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceKeyEvent;
typedef XDeviceKeyEvent XDeviceKeyPressedEvent;
typedef XDeviceKeyEvent XDeviceKeyReleasedEvent;
/*******************************************************************
*
* DeviceButton events. These events are sent by extension devices
* that support input class Buttons.
*
*/
typedef struct {
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window that the event occured on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
unsigned int button; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceButtonEvent;
typedef XDeviceButtonEvent XDeviceButtonPressedEvent;
typedef XDeviceButtonEvent XDeviceButtonReleasedEvent;
/*******************************************************************
*
* DeviceMotionNotify event. These events are sent by extension devices
* that support input class Valuators.
*
*/
typedef struct
{
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window that the event occured on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
char is_hint; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceMotionEvent;
/*******************************************************************
*
* DeviceFocusChange events. These events are sent when the focus
* of an extension device that can be focused is changed.
*
*/
typedef struct
{
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
int detail;
/*
* NotifyAncestor, NotifyVirtual, NotifyInferior,
* NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
* NotifyPointerRoot, NotifyDetailNone
*/
Time time;
} XDeviceFocusChangeEvent;
typedef XDeviceFocusChangeEvent XDeviceFocusInEvent;
typedef XDeviceFocusChangeEvent XDeviceFocusOutEvent;
/*******************************************************************
*
* ProximityNotify events. These events are sent by those absolute
* positioning devices that are capable of generating proximity information.
*
*/
typedef struct
{
int type; /* ProximityIn or ProximityOut */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window;
XID deviceid;
Window root;
Window subwindow;
Time time;
int x, y;
int x_root, y_root;
unsigned int state;
Bool same_screen;
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XProximityNotifyEvent;
typedef XProximityNotifyEvent XProximityInEvent;
typedef XProximityNotifyEvent XProximityOutEvent;
/*******************************************************************
*
* DeviceStateNotify events are generated on EnterWindow and FocusIn
* for those clients who have selected DeviceState.
*
*/
typedef struct
{
unsigned char class;
unsigned char length;
} XInputClass;
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window;
XID deviceid;
Time time;
int num_classes;
char data[64];
} XDeviceStateNotifyEvent;
typedef struct {
unsigned char class;
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int valuators[6];
} XValuatorStatus;
typedef struct {
unsigned char class;
unsigned char length;
short num_keys;
char keys[32];
} XKeyStatus;
typedef struct {
unsigned char class;
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonStatus;
/*******************************************************************
*
* DeviceMappingNotify event. This event is sent when the key mapping,
* modifier mapping, or button mapping of an extension device is changed.
*
*/
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* unused */
XID deviceid;
Time time;
int request; /* one of MappingModifier, MappingKeyboard,
MappingPointer */
int first_keycode;/* first keycode */
int count; /* defines range of change w. first_keycode*/
} XDeviceMappingEvent;
/*******************************************************************
*
* ChangeDeviceNotify event. This event is sent when an
* XChangeKeyboard or XChangePointer request is made.
*
*/
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* unused */
XID deviceid;
Time time;
int request; /* NewPointer or NewKeyboard */
} XChangeDeviceNotifyEvent;
/*******************************************************************
*
* Control structures for input devices that support input class
* Feedback. These are used by the XGetFeedbackControl and
* XChangeFeedbackControl functions.
*
*/
typedef struct {
XID class;
int length;
XID id;
} XFeedbackState;
typedef struct {
XID class;
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int global_auto_repeat;
char auto_repeats[32];
} XKbdFeedbackState;
typedef struct {
XID class;
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackState;
typedef struct {
XID class;
int length;
XID id;
int resolution;
int minVal;
int maxVal;
} XIntegerFeedbackState;
typedef struct {
XID class;
int length;
XID id;
int max_symbols;
int num_syms_supported;
KeySym *syms_supported;
} XStringFeedbackState;
typedef struct {
XID class;
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackState;
typedef struct {
XID class;
int length;
XID id;
int led_values;
int led_mask;
} XLedFeedbackState;
typedef struct {
XID class;
int length;
XID id;
} XFeedbackControl;
typedef struct {
XID class;
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackControl;
typedef struct {
XID class;
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int led_value;
int key;
int auto_repeat_mode;
} XKbdFeedbackControl;
typedef struct {
XID class;
int length;
XID id;
int num_keysyms;
KeySym *syms_to_display;
} XStringFeedbackControl;
typedef struct {
XID class;
int length;
XID id;
int int_to_display;
} XIntegerFeedbackControl;
typedef struct {
XID class;
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackControl;
typedef struct {
XID class;
int length;
XID id;
int led_mask;
int led_values;
} XLedFeedbackControl;
/*******************************************************************
*
* Device control structures.
*
*/
typedef struct {
XID control;
int length;
} XDeviceControl;
typedef struct {
XID control;
int length;
int first_valuator;
int num_valuators;
int *resolutions;
} XDeviceResolutionControl;
typedef struct {
XID control;
int length;
int num_valuators;
int *resolutions;
int *min_resolutions;
int *max_resolutions;
} XDeviceResolutionState;
/*******************************************************************
*
* An array of XDeviceList structures is returned by the
* XListInputDevices function. Each entry contains information
* about one input device. Among that information is an array of
* pointers to structures that describe the characteristics of
* the input device.
*
*/
typedef struct _XAnyClassinfo *XAnyClassPtr;
typedef struct _XAnyClassinfo {
XID class;
int length;
} XAnyClassInfo;
typedef struct _XDeviceInfo *XDeviceInfoPtr;
typedef struct _XDeviceInfo
{
XID id;
Atom type;
char *name;
int num_classes;
int use;
XAnyClassPtr inputclassinfo;
} XDeviceInfo;
typedef struct _XKeyInfo *XKeyInfoPtr;
typedef struct _XKeyInfo
{
XID class;
int length;
unsigned short min_keycode;
unsigned short max_keycode;
unsigned short num_keys;
} XKeyInfo;
typedef struct _XButtonInfo *XButtonInfoPtr;
typedef struct _XButtonInfo {
XID class;
int length;
short num_buttons;
} XButtonInfo;
typedef struct _XAxisInfo *XAxisInfoPtr;
typedef struct _XAxisInfo {
int resolution;
int min_value;
int max_value;
} XAxisInfo;
typedef struct _XValuatorInfo *XValuatorInfoPtr;
typedef struct _XValuatorInfo
{
XID class;
int length;
unsigned char num_axes;
unsigned char mode;
unsigned long motion_buffer;
XAxisInfoPtr axes;
} XValuatorInfo;
/*******************************************************************
*
* An XDevice structure is returned by the XOpenDevice function.
* It contains an array of pointers to XInputClassInfo structures.
* Each contains information about a class of input supported by the
* device, including a pointer to an array of data for each type of event
* the device reports.
*
*/
typedef struct {
unsigned char input_class;
unsigned char event_type_base;
} XInputClassInfo;
typedef struct {
XID device_id;
int num_classes;
XInputClassInfo *classes;
} XDevice;
/*******************************************************************
*
* The following structure is used to return information for the
* XGetSelectedExtensionEvents function.
*
*/
typedef struct {
XEventClass event_type;
XID device;
} XEventList;
/*******************************************************************
*
* The following structure is used to return motion history data from
* an input device that supports the input class Valuators.
* This information is returned by the XGetDeviceMotionEvents function.
*
*/
typedef struct {
Time time;
int *data;
} XDeviceTimeCoord;
/*******************************************************************
*
* Device state structure.
* This is returned by the XQueryDeviceState request.
*
*/
typedef struct {
XID device_id;
int num_classes;
XInputClass *data;
} XDeviceState;
/*******************************************************************
*
* Note that the mode field is a bitfield that reports the Proximity
* status of the device as well as the mode. The mode field should
* be OR'd with the mask DeviceMode and compared with the values
* Absolute and Relative to determine the mode, and should be OR'd
* with the mask ProximityState and compared with the values InProximity
* and OutOfProximity to determine the proximity state.
*
*/
typedef struct {
unsigned char class;
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int *valuators;
} XValuatorState;
typedef struct {
unsigned char class;
unsigned char length;
short num_keys;
char keys[32];
} XKeyState;
typedef struct {
unsigned char class;
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonState;
/*******************************************************************
*
* Function definitions.
*
*/
_XFUNCPROTOBEGIN
extern int XChangeKeyboardDevice(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */
#endif
);
extern int XChangePointerDevice(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
int /* xaxis */,
int /* yaxis */
#endif
);
extern int XGrabDevice(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
Window /* grab_window */,
Bool /* ownerEvents */,
int /* event count */,
XEventClass* /* event_list */,
int /* this_device_mode */,
int /* other_devices_mode */,
Time /* time */
#endif
);
extern int XUngrabDevice(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
Time /* time */
#endif
);
extern int XGrabDeviceKey(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
unsigned int /* key */,
unsigned int /* modifiers */,
XDevice* /* modifier_device */,
Window /* grab_window */,
Bool /* owner_events */,
unsigned int /* event_count */,
XEventClass* /* event_list */,
int /* this_device_mode */,
int /* other_devices_mode */
#endif
);
extern int XUngrabDeviceKey(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
unsigned int /* key */,
unsigned int /* modifiers */,
XDevice* /* modifier_dev */,
Window /* grab_window */
#endif
);
extern int XGrabDeviceButton(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
unsigned int /* button */,
unsigned int /* modifiers */,
XDevice* /* modifier_device */,
Window /* grab_window */,
Bool /* owner_events */,
unsigned int /* event_count */,
XEventClass* /* event_list */,
int /* this_device_mode */,
int /* other_devices_mode */
#endif
);
extern int XUngrabDeviceButton(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
unsigned int /* button */,
unsigned int /* modifiers */,
XDevice* /* modifier_dev */,
Window /* grab_window */
#endif
);
extern int XAllowDeviceEvents(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
int /* event_mode */,
Time /* time */
#endif
);
extern int XGetDeviceFocus(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
Window* /* focus */,
int* /* revert_to */,
Time* /* time */
#endif
);
extern int XSetDeviceFocus(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
Window /* focus */,
int /* revert_to */,
Time /* time */
#endif
);
extern XFeedbackState *XGetFeedbackControl(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
int* /* num_feedbacks */
#endif
);
extern int XFreeFeedbackList(
#if NeedFunctionPrototypes
XFeedbackState* /* list */
#endif
);
extern int XChangeFeedbackControl(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
unsigned long /* mask */,
XFeedbackControl* /* f */
#endif
);
extern int XDeviceBell(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
XID /* feedbackclass */,
XID /* feedbackid */,
int /* percent */
#endif
);
extern KeySym *XGetDeviceKeyMapping(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
#if NeedWidePrototypes
unsigned int /* first */,
#else
KeyCode /* first */,
#endif
int /* keycount */,
int* /* syms_per_code */
#endif
);
extern int XChangeDeviceKeyMapping(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
int /* first */,
int /* syms_per_code */,
KeySym* /* keysyms */,
int /* count */
#endif
);
extern XModifierKeymap *XGetDeviceModifierMapping(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */
#endif
);
extern int XSetDeviceModifierMapping(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
XModifierKeymap* /* modmap */
#endif
);
extern int XSetDeviceButtonMapping(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
unsigned char* /* map[] */,
int /* nmap */
#endif
);
extern int XGetDeviceButtonMapping(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
unsigned char* /* map[] */,
unsigned int /* nmap */
#endif
);
extern XDeviceState *XQueryDeviceState(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */
#endif
);
extern int XFreeDeviceState(
#if NeedFunctionPrototypes
XDeviceState* /* list */
#endif
);
extern XExtensionVersion *XGetExtensionVersion(
#if NeedFunctionPrototypes
Display* /* display */,
_Xconst char* /* name */
#endif
);
extern XDeviceInfo *XListInputDevices(
#if NeedFunctionPrototypes
Display* /* display */,
int* /* ndevices */
#endif
);
extern int XFreeDeviceList(
#if NeedFunctionPrototypes
XDeviceInfo* /* list */
#endif
);
extern XDevice *XOpenDevice(
#if NeedFunctionPrototypes
Display* /* display */,
XID /* id */
#endif
);
extern int XCloseDevice(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */
#endif
);
extern int XSetDeviceMode(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
int /* mode */
#endif
);
extern int XSetDeviceValuators(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
int* /* valuators */,
int /* first_valuator */,
int /* num_valuators */
#endif
);
extern XDeviceControl *XGetDeviceControl(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
int /* control */
#endif
);
extern int XChangeDeviceControl(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
int /* control */,
XDeviceControl* /* d */
#endif
);
extern int XSelectExtensionEvent(
#if NeedFunctionPrototypes
Display* /* display */,
Window /* w */,
XEventClass* /* event_list */,
int /* count */
#endif
);
extern int XGetSelectedExtensionEvents(
#if NeedFunctionPrototypes
Display* /* display */,
Window /* w */,
int* /* this_client_count */,
XEventClass** /* this_client_list */,
int* /* all_clients_count */,
XEventClass** /* all_clients_list */
#endif
);
extern int XChangeDeviceDontPropagateList(
#if NeedFunctionPrototypes
Display* /* display */,
Window /* window */,
int /* count */,
XEventClass* /* events */,
int /* mode */
#endif
);
extern XEventClass *XGetDeviceDontPropagateList(
#if NeedFunctionPrototypes
Display* /* display */,
Window /* window */,
int* /* count */
#endif
);
extern Status XSendExtensionEvent(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
Window /* dest */,
Bool /* prop */,
int /* count */,
XEventClass* /* list */,
XEvent* /* event */
#endif
);
extern XDeviceTimeCoord *XGetDeviceMotionEvents(
#if NeedFunctionPrototypes
Display* /* display */,
XDevice* /* device */,
Time /* start */,
Time /* stop */,
int* /* nEvents */,
int* /* mode */,
int* /* axis_count */
#endif
);
extern int XFreeDeviceMotionEvents(
#if NeedFunctionPrototypes
XDeviceTimeCoord* /* events */
#endif
);
extern int XFreeDeviceControl(
#if NeedFunctionPrototypes
XDeviceControl* /* control */
#endif
);
_XFUNCPROTOEND
#endif /* _XINPUT_H_ */
/* Definitions used by the server, library and client */
#ifndef _XI_H_
#define _XI_H_
#define sz_xGetExtensionVersionReq 8
#define sz_xGetExtensionVersionReply 32
#define sz_xListInputDevicesReq 4
#define sz_xListInputDevicesReply 32
#define sz_xOpenDeviceReq 8
#define sz_xOpenDeviceReply 32
#define sz_xCloseDeviceReq 8
#define sz_xSetDeviceModeReq 8
#define sz_xSetDeviceModeReply 32
#define sz_xSelectExtensionEventReq 12
#define sz_xGetSelectedExtensionEventsReq 8
#define sz_xGetSelectedExtensionEventsReply 32
#define sz_xChangeDeviceDontPropagateListReq 12
#define sz_xGetDeviceDontPropagateListReq 8
#define sz_xGetDeviceDontPropagateListReply 32
#define sz_xGetDeviceMotionEventsReq 16
#define sz_xGetDeviceMotionEventsReply 32
#define sz_xChangeKeyboardDeviceReq 8
#define sz_xChangeKeyboardDeviceReply 32
#define sz_xChangePointerDeviceReq 8
#define sz_xChangePointerDeviceReply 32
#define sz_xGrabDeviceReq 20
#define sz_xGrabDeviceReply 32
#define sz_xUngrabDeviceReq 12
#define sz_xGrabDeviceKeyReq 20
#define sz_xGrabDeviceKeyReply 32
#define sz_xUngrabDeviceKeyReq 16
#define sz_xGrabDeviceButtonReq 20
#define sz_xGrabDeviceButtonReply 32
#define sz_xUngrabDeviceButtonReq 16
#define sz_xAllowDeviceEventsReq 12
#define sz_xGetDeviceFocusReq 8
#define sz_xGetDeviceFocusReply 32
#define sz_xSetDeviceFocusReq 16
#define sz_xGetFeedbackControlReq 8
#define sz_xGetFeedbackControlReply 32
#define sz_xChangeFeedbackControlReq 12
#define sz_xGetDeviceKeyMappingReq 8
#define sz_xGetDeviceKeyMappingReply 32
#define sz_xChangeDeviceKeyMappingReq 8
#define sz_xGetDeviceModifierMappingReq 8
#define sz_xSetDeviceModifierMappingReq 8
#define sz_xSetDeviceModifierMappingReply 32
#define sz_xGetDeviceButtonMappingReq 8
#define sz_xGetDeviceButtonMappingReply 32
#define sz_xSetDeviceButtonMappingReq 8
#define sz_xSetDeviceButtonMappingReply 32
#define sz_xQueryDeviceStateReq 8
#define sz_xQueryDeviceStateReply 32
#define sz_xSendExtensionEventReq 16
#define sz_xDeviceBellReq 8
#define sz_xSetDeviceValuatorsReq 8
#define sz_xSetDeviceValuatorsReply 32
#define sz_xGetDeviceControlReq 8
#define sz_xGetDeviceControlReply 32
#define sz_xChangeDeviceControlReq 8
#define sz_xChangeDeviceControlReply 32
#define INAME "XInputExtension"
#define XI_KEYBOARD "KEYBOARD"
#define XI_MOUSE "MOUSE"
#define XI_TABLET "TABLET"
#define XI_TOUCHSCREEN "TOUCHSCREEN"
#define XI_TOUCHPAD "TOUCHPAD"
#define XI_BARCODE "BARCODE"
#define XI_BUTTONBOX "BUTTONBOX"
#define XI_KNOB_BOX "KNOB_BOX"
#define XI_ONE_KNOB "ONE_KNOB"
#define XI_NINE_KNOB "NINE_KNOB"
#define XI_TRACKBALL "TRACKBALL"
#define XI_QUADRATURE "QUADRATURE"
#define XI_ID_MODULE "ID_MODULE"
#define XI_SPACEBALL "SPACEBALL"
#define XI_DATAGLOVE "DATAGLOVE"
#define XI_EYETRACKER "EYETRACKER"
#define XI_CURSORKEYS "CURSORKEYS"
#define XI_FOOTMOUSE "FOOTMOUSE"
#define Dont_Check 0
#define XInput_Initial_Release 1
#define XInput_Add_XDeviceBell 2
#define XInput_Add_XSetDeviceValuators 3
#define XInput_Add_XChangeDeviceControl 4
#define XI_Absent 0
#define XI_Present 1
#define XI_Initial_Release_Major 1
#define XI_Initial_Release_Minor 0
#define XI_Add_XDeviceBell_Major 1
#define XI_Add_XDeviceBell_Minor 1
#define XI_Add_XSetDeviceValuators_Major 1
#define XI_Add_XSetDeviceValuators_Minor 2
#define XI_Add_XChangeDeviceControl_Major 1
#define XI_Add_XChangeDeviceControl_Minor 3
#define DEVICE_RESOLUTION 1
#define NoSuchExtension 1
#define COUNT 0
#define CREATE 1
#define NewPointer 0
#define NewKeyboard 1
#define XPOINTER 0
#define XKEYBOARD 1
#define UseXKeyboard 0xFF
#define IsXPointer 0
#define IsXKeyboard 1
#define IsXExtensionDevice 2
#define AsyncThisDevice 0
#define SyncThisDevice 1
#define ReplayThisDevice 2
#define AsyncOtherDevices 3
#define AsyncAll 4
#define SyncAll 5
#define FollowKeyboard 3
#define RevertToFollowKeyboard 3
#define DvAccelNum (1L << 0)
#define DvAccelDenom (1L << 1)
#define DvThreshold (1L << 2)
#define DvKeyClickPercent (1L<<0)
#define DvPercent (1L<<1)
#define DvPitch (1L<<2)
#define DvDuration (1L<<3)
#define DvLed (1L<<4)
#define DvLedMode (1L<<5)
#define DvKey (1L<<6)
#define DvAutoRepeatMode (1L<<7)
#define DvString (1L << 0)
#define DvInteger (1L << 0)
#define DeviceMode (1L << 0)
#define Relative 0
#define Absolute 1
#define ProximityState (1L << 1)
#define InProximity (0L << 1)
#define OutOfProximity (1L << 1)
#define AddToList 0
#define DeleteFromList 1
#define KeyClass 0
#define ButtonClass 1
#define ValuatorClass 2
#define FeedbackClass 3
#define ProximityClass 4
#define FocusClass 5
#define OtherClass 6
#define KbdFeedbackClass 0
#define PtrFeedbackClass 1
#define StringFeedbackClass 2
#define IntegerFeedbackClass 3
#define LedFeedbackClass 4
#define BellFeedbackClass 5
#define _devicePointerMotionHint 0
#define _deviceButton1Motion 1
#define _deviceButton2Motion 2
#define _deviceButton3Motion 3
#define _deviceButton4Motion 4
#define _deviceButton5Motion 5
#define _deviceButtonMotion 6
#define _deviceButtonGrab 7
#define _deviceOwnerGrabButton 8
#define _noExtensionEvent 9
#define XI_BadDevice 0
#define XI_BadEvent 1
#define XI_BadMode 2
#define XI_DeviceBusy 3
#define XI_BadClass 4
typedef unsigned long XEventClass;
/*******************************************************************
*
* Extension version structure.
*
*/
typedef struct {
int present;
short major_version;
short minor_version;
} XExtensionVersion;
#endif /* _XI_H_ */
libXi-1.7.1.901/specs/inputlib.xml 0000664 0032045 0000764 00000006012 11673753274 013532 0000000 0000000
%defs;
]>
X Input Device Extension Library
X Version 11, Release &fullrelvers;
Version 1.0
MarkPatrick
Ardent Computer
GeorgeSachs
Hewlett-Packard
198919901991
Hewlett-Packard Company
Ardent Computer
Permission to use, copy, modify, and distribute this documentation for any purpose and without
fee is hereby granted, provided that the above copyright notice and this permission notice appear
in all copies. Ardent and Hewlett-Packard make no representations about the suitability for any
purpose of the information in this document. It is provided "as is" without express or implied
warranty.
Copyright © 1989, 1990, 1991, 1992 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.
X Window System is a trademark of The Open Group.
libXi-1.7.1.901/specs/Makefile.am 0000664 0032045 0000764 00000000577 11673753274 013230 0000000 0000000
if ENABLE_SPECS
# Main DocBook/XML files (DOCTYPE book)
docbook = inputlib.xml
# Included chapters, appendix, images
chapters = library.xml encoding.xml
# The location where the DocBook/XML files and their generated formats are installed
shelfdir = $(docdir)
# Generate DocBook/XML output formats with or without stylesheets
include $(top_srcdir)/docbook.am
endif ENABLE_SPECS
libXi-1.7.1.901/include/ 0000775 0032045 0000764 00000000000 12162670017 011534 5 0000000 0000000 libXi-1.7.1.901/include/X11/ 0000775 0032045 0000764 00000000000 12162670017 012105 5 0000000 0000000 libXi-1.7.1.901/include/X11/extensions/ 0000775 0032045 0000764 00000000000 12162670017 014304 5 0000000 0000000 libXi-1.7.1.901/include/X11/extensions/XInput.h 0000664 0032045 0000764 00000106256 11615636372 015646 0000000 0000000 /************************************************************
Copyright 1989, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
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
OPEN GROUP 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 Open Group 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 Open Group.
Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Hewlett-Packard not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
********************************************************/
/* Definitions used by the library and client */
#ifndef _XINPUT_H_
#define _XINPUT_H_
#include
#include
#define _deviceKeyPress 0
#define _deviceKeyRelease 1
#define _deviceButtonPress 0
#define _deviceButtonRelease 1
#define _deviceMotionNotify 0
#define _deviceFocusIn 0
#define _deviceFocusOut 1
#define _proximityIn 0
#define _proximityOut 1
#define _deviceStateNotify 0
#define _deviceMappingNotify 1
#define _changeDeviceNotify 2
/* Space of 3 between is necessary! Reserved for DeviceKeyStateNotify,
DeviceButtonStateNotify, DevicePresenceNotify (essentially unused). This
code has to be in sync with FixExtensionEvents() in xserver/Xi/extinit.c */
#define _propertyNotify 6
#define FindTypeAndClass(d,type,_class,classid,offset) \
{ int _i; XInputClassInfo *_ip; \
type = 0; _class = 0; \
for (_i=0, _ip= ((XDevice *) d)->classes; \
_i< ((XDevice *) d)->num_classes; \
_i++, _ip++) \
if (_ip->input_class == classid) \
{type = _ip->event_type_base + offset; \
_class = ((XDevice *) d)->device_id << 8 | type;}}
#define DeviceKeyPress(d,type,_class) \
FindTypeAndClass(d, type, _class, KeyClass, _deviceKeyPress)
#define DeviceKeyRelease(d,type,_class) \
FindTypeAndClass(d, type, _class, KeyClass, _deviceKeyRelease)
#define DeviceButtonPress(d,type,_class) \
FindTypeAndClass(d, type, _class, ButtonClass, _deviceButtonPress)
#define DeviceButtonRelease(d,type,_class) \
FindTypeAndClass(d, type, _class, ButtonClass, _deviceButtonRelease)
#define DeviceMotionNotify(d,type,_class) \
FindTypeAndClass(d, type, _class, ValuatorClass, _deviceMotionNotify)
#define DeviceFocusIn(d,type,_class) \
FindTypeAndClass(d, type, _class, FocusClass, _deviceFocusIn)
#define DeviceFocusOut(d,type,_class) \
FindTypeAndClass(d, type, _class, FocusClass, _deviceFocusOut)
#define ProximityIn(d,type,_class) \
FindTypeAndClass(d, type, _class, ProximityClass, _proximityIn)
#define ProximityOut(d,type,_class) \
FindTypeAndClass(d, type, _class, ProximityClass, _proximityOut)
#define DeviceStateNotify(d,type,_class) \
FindTypeAndClass(d, type, _class, OtherClass, _deviceStateNotify)
#define DeviceMappingNotify(d,type,_class) \
FindTypeAndClass(d, type, _class, OtherClass, _deviceMappingNotify)
#define ChangeDeviceNotify(d,type,_class) \
FindTypeAndClass(d, type, _class, OtherClass, _changeDeviceNotify)
#define DevicePropertyNotify(d, type, _class) \
FindTypeAndClass(d, type, _class, OtherClass, _propertyNotify)
#define DevicePointerMotionHint(d,type,_class) \
{ _class = ((XDevice *) d)->device_id << 8 | _devicePointerMotionHint;}
#define DeviceButton1Motion(d,type,_class) \
{ _class = ((XDevice *) d)->device_id << 8 | _deviceButton1Motion;}
#define DeviceButton2Motion(d,type,_class) \
{ _class = ((XDevice *) d)->device_id << 8 | _deviceButton2Motion;}
#define DeviceButton3Motion(d,type,_class) \
{ _class = ((XDevice *) d)->device_id << 8 | _deviceButton3Motion;}
#define DeviceButton4Motion(d,type, _class) \
{ _class = ((XDevice *) d)->device_id << 8 | _deviceButton4Motion;}
#define DeviceButton5Motion(d,type,_class) \
{ _class = ((XDevice *) d)->device_id << 8 | _deviceButton5Motion;}
#define DeviceButtonMotion(d,type, _class) \
{ _class = ((XDevice *) d)->device_id << 8 | _deviceButtonMotion;}
#define DeviceOwnerGrabButton(d,type,_class) \
{ _class = ((XDevice *) d)->device_id << 8 | _deviceOwnerGrabButton;}
#define DeviceButtonPressGrab(d,type,_class) \
{ _class = ((XDevice *) d)->device_id << 8 | _deviceButtonGrab;}
#define NoExtensionEvent(d,type,_class) \
{ _class = ((XDevice *) d)->device_id << 8 | _noExtensionEvent;}
/* We need the declaration for DevicePresence. */
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
extern int _XiGetDevicePresenceNotifyEvent(Display *);
extern void _xibaddevice( Display *dpy, int *error);
extern void _xibadclass( Display *dpy, int *error);
extern void _xibadevent( Display *dpy, int *error);
extern void _xibadmode( Display *dpy, int *error);
extern void _xidevicebusy( Display *dpy, int *error);
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
#define DevicePresence(dpy, type, _class) \
{ \
type = _XiGetDevicePresenceNotifyEvent(dpy); \
_class = (0x10000 | _devicePresence); \
}
/* Errors */
#define BadDevice(dpy,error) _xibaddevice(dpy, &error)
#define BadClass(dpy,error) _xibadclass(dpy, &error)
#define BadEvent(dpy,error) _xibadevent(dpy, &error)
#define BadMode(dpy,error) _xibadmode(dpy, &error)
#define DeviceBusy(dpy,error) _xidevicebusy(dpy, &error)
typedef struct _XAnyClassinfo *XAnyClassPtr;
/***************************************************************
*
* DeviceKey events. These events are sent by input devices that
* support input class Keys.
* The location of the X pointer is reported in the coordinate
* fields of the x,y and x_root,y_root fields.
*
*/
typedef struct
{
int type; /* of event */
unsigned long serial; /* # of last request processed */
Bool send_event; /* true if from SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window event occured on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
unsigned int keycode; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceKeyEvent;
typedef XDeviceKeyEvent XDeviceKeyPressedEvent;
typedef XDeviceKeyEvent XDeviceKeyReleasedEvent;
/*******************************************************************
*
* DeviceButton events. These events are sent by extension devices
* that support input class Buttons.
*
*/
typedef struct {
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window that the event occured on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
unsigned int button; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceButtonEvent;
typedef XDeviceButtonEvent XDeviceButtonPressedEvent;
typedef XDeviceButtonEvent XDeviceButtonReleasedEvent;
/*******************************************************************
*
* DeviceMotionNotify event. These events are sent by extension devices
* that support input class Valuators.
*
*/
typedef struct
{
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
Window root; /* root window that the event occured on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* x, y coordinates in event window */
int x_root; /* coordinates relative to root */
int y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
char is_hint; /* detail */
Bool same_screen; /* same screen flag */
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XDeviceMotionEvent;
/*******************************************************************
*
* DeviceFocusChange events. These events are sent when the focus
* of an extension device that can be focused is changed.
*
*/
typedef struct
{
int type; /* of event */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
XID deviceid;
int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
int detail;
/*
* NotifyAncestor, NotifyVirtual, NotifyInferior,
* NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
* NotifyPointerRoot, NotifyDetailNone
*/
Time time;
} XDeviceFocusChangeEvent;
typedef XDeviceFocusChangeEvent XDeviceFocusInEvent;
typedef XDeviceFocusChangeEvent XDeviceFocusOutEvent;
/*******************************************************************
*
* ProximityNotify events. These events are sent by those absolute
* positioning devices that are capable of generating proximity information.
*
*/
typedef struct
{
int type; /* ProximityIn or ProximityOut */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window;
XID deviceid;
Window root;
Window subwindow;
Time time;
int x, y;
int x_root, y_root;
unsigned int state;
Bool same_screen;
unsigned int device_state; /* device key or button mask */
unsigned char axes_count;
unsigned char first_axis;
int axis_data[6];
} XProximityNotifyEvent;
typedef XProximityNotifyEvent XProximityInEvent;
typedef XProximityNotifyEvent XProximityOutEvent;
/*******************************************************************
*
* DeviceStateNotify events are generated on EnterWindow and FocusIn
* for those clients who have selected DeviceState.
*
*/
typedef struct
{
#if defined(__cplusplus) || defined(c_plusplus)
unsigned char c_class;
#else
unsigned char class;
#endif
unsigned char length;
} XInputClass;
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window;
XID deviceid;
Time time;
int num_classes;
char data[64];
} XDeviceStateNotifyEvent;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
unsigned char c_class;
#else
unsigned char class;
#endif
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int valuators[6];
} XValuatorStatus;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
unsigned char c_class;
#else
unsigned char class;
#endif
unsigned char length;
short num_keys;
char keys[32];
} XKeyStatus;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
unsigned char c_class;
#else
unsigned char class;
#endif
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonStatus;
/*******************************************************************
*
* DeviceMappingNotify event. This event is sent when the key mapping,
* modifier mapping, or button mapping of an extension device is changed.
*
*/
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* unused */
XID deviceid;
Time time;
int request; /* one of MappingModifier, MappingKeyboard,
MappingPointer */
int first_keycode;/* first keycode */
int count; /* defines range of change w. first_keycode*/
} XDeviceMappingEvent;
/*******************************************************************
*
* ChangeDeviceNotify event. This event is sent when an
* XChangeKeyboard or XChangePointer request is made.
*
*/
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* unused */
XID deviceid;
Time time;
int request; /* NewPointer or NewKeyboard */
} XChangeDeviceNotifyEvent;
/*******************************************************************
*
* DevicePresenceNotify event. This event is sent when the list of
* input devices changes, in which case devchange will be false, and
* no information about the change will be contained in the event;
* the client should use XListInputDevices() to learn what has changed.
*
* If devchange is true, an attribute that the server believes is
* important has changed on a device, and the client should use
* XGetDeviceControl to examine the device. If control is non-zero,
* then that control has changed meaningfully.
*/
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* unused */
Time time;
Bool devchange;
XID deviceid;
XID control;
} XDevicePresenceNotifyEvent;
/*
* Notifies the client that a property on a device has changed value. The
* client is expected to query the server for updated value of the property.
*/
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* unused */
Time time;
XID deviceid; /* id of the device that changed */
Atom atom; /* the property that changed */
int state; /* PropertyNewValue or PropertyDeleted */
} XDevicePropertyNotifyEvent;
/*******************************************************************
*
* Control structures for input devices that support input class
* Feedback. These are used by the XGetFeedbackControl and
* XChangeFeedbackControl functions.
*
*/
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
} XFeedbackState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int global_auto_repeat;
char auto_repeats[32];
} XKbdFeedbackState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int resolution;
int minVal;
int maxVal;
} XIntegerFeedbackState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int max_symbols;
int num_syms_supported;
KeySym *syms_supported;
} XStringFeedbackState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int led_values;
int led_mask;
} XLedFeedbackState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
} XFeedbackControl;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackControl;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int led_value;
int key;
int auto_repeat_mode;
} XKbdFeedbackControl;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int num_keysyms;
KeySym *syms_to_display;
} XStringFeedbackControl;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int int_to_display;
} XIntegerFeedbackControl;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackControl;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
XID id;
int led_mask;
int led_values;
} XLedFeedbackControl;
/*******************************************************************
*
* Device control structures.
*
*/
typedef struct {
XID control;
int length;
} XDeviceControl;
typedef struct {
XID control;
int length;
int first_valuator;
int num_valuators;
int *resolutions;
} XDeviceResolutionControl;
typedef struct {
XID control;
int length;
int num_valuators;
int *resolutions;
int *min_resolutions;
int *max_resolutions;
} XDeviceResolutionState;
typedef struct {
XID control;
int length;
int min_x;
int max_x;
int min_y;
int max_y;
int flip_x;
int flip_y;
int rotation;
int button_threshold;
} XDeviceAbsCalibControl, XDeviceAbsCalibState;
typedef struct {
XID control;
int length;
int offset_x;
int offset_y;
int width;
int height;
int screen;
XID following;
} XDeviceAbsAreaControl, XDeviceAbsAreaState;
typedef struct {
XID control;
int length;
int status;
} XDeviceCoreControl;
typedef struct {
XID control;
int length;
int status;
int iscore;
} XDeviceCoreState;
typedef struct {
XID control;
int length;
int enable;
} XDeviceEnableControl, XDeviceEnableState;
/*******************************************************************
*
* An array of XDeviceList structures is returned by the
* XListInputDevices function. Each entry contains information
* about one input device. Among that information is an array of
* pointers to structures that describe the characteristics of
* the input device.
*
*/
typedef struct _XAnyClassinfo {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
} XAnyClassInfo;
typedef struct _XDeviceInfo *XDeviceInfoPtr;
typedef struct _XDeviceInfo
{
XID id;
Atom type;
char *name;
int num_classes;
int use;
XAnyClassPtr inputclassinfo;
} XDeviceInfo;
typedef struct _XKeyInfo *XKeyInfoPtr;
typedef struct _XKeyInfo
{
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
unsigned short min_keycode;
unsigned short max_keycode;
unsigned short num_keys;
} XKeyInfo;
typedef struct _XButtonInfo *XButtonInfoPtr;
typedef struct _XButtonInfo {
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
short num_buttons;
} XButtonInfo;
typedef struct _XAxisInfo *XAxisInfoPtr;
typedef struct _XAxisInfo {
int resolution;
int min_value;
int max_value;
} XAxisInfo;
typedef struct _XValuatorInfo *XValuatorInfoPtr;
typedef struct _XValuatorInfo
{
#if defined(__cplusplus) || defined(c_plusplus)
XID c_class;
#else
XID class;
#endif
int length;
unsigned char num_axes;
unsigned char mode;
unsigned long motion_buffer;
XAxisInfoPtr axes;
} XValuatorInfo;
/*******************************************************************
*
* An XDevice structure is returned by the XOpenDevice function.
* It contains an array of pointers to XInputClassInfo structures.
* Each contains information about a class of input supported by the
* device, including a pointer to an array of data for each type of event
* the device reports.
*
*/
typedef struct {
unsigned char input_class;
unsigned char event_type_base;
} XInputClassInfo;
typedef struct {
XID device_id;
int num_classes;
XInputClassInfo *classes;
} XDevice;
/*******************************************************************
*
* The following structure is used to return information for the
* XGetSelectedExtensionEvents function.
*
*/
typedef struct {
XEventClass event_type;
XID device;
} XEventList;
/*******************************************************************
*
* The following structure is used to return motion history data from
* an input device that supports the input class Valuators.
* This information is returned by the XGetDeviceMotionEvents function.
*
*/
typedef struct {
Time time;
int *data;
} XDeviceTimeCoord;
/*******************************************************************
*
* Device state structure.
* This is returned by the XQueryDeviceState request.
*
*/
typedef struct {
XID device_id;
int num_classes;
XInputClass *data;
} XDeviceState;
/*******************************************************************
*
* Note that the mode field is a bitfield that reports the Proximity
* status of the device as well as the mode. The mode field should
* be OR'd with the mask DeviceMode and compared with the values
* Absolute and Relative to determine the mode, and should be OR'd
* with the mask ProximityState and compared with the values InProximity
* and OutOfProximity to determine the proximity state.
*
*/
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
unsigned char c_class;
#else
unsigned char class;
#endif
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int *valuators;
} XValuatorState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
unsigned char c_class;
#else
unsigned char class;
#endif
unsigned char length;
short num_keys;
char keys[32];
} XKeyState;
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
unsigned char c_class;
#else
unsigned char class;
#endif
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonState;
/*******************************************************************
*
* Function definitions.
*
*/
_XFUNCPROTOBEGIN
extern int XChangeKeyboardDevice(
Display* /* display */,
XDevice* /* device */
);
extern int XChangePointerDevice(
Display* /* display */,
XDevice* /* device */,
int /* xaxis */,
int /* yaxis */
);
extern int XGrabDevice(
Display* /* display */,
XDevice* /* device */,
Window /* grab_window */,
Bool /* ownerEvents */,
int /* event count */,
XEventClass* /* event_list */,
int /* this_device_mode */,
int /* other_devices_mode */,
Time /* time */
);
extern int XUngrabDevice(
Display* /* display */,
XDevice* /* device */,
Time /* time */
);
extern int XGrabDeviceKey(
Display* /* display */,
XDevice* /* device */,
unsigned int /* key */,
unsigned int /* modifiers */,
XDevice* /* modifier_device */,
Window /* grab_window */,
Bool /* owner_events */,
unsigned int /* event_count */,
XEventClass* /* event_list */,
int /* this_device_mode */,
int /* other_devices_mode */
);
extern int XUngrabDeviceKey(
Display* /* display */,
XDevice* /* device */,
unsigned int /* key */,
unsigned int /* modifiers */,
XDevice* /* modifier_dev */,
Window /* grab_window */
);
extern int XGrabDeviceButton(
Display* /* display */,
XDevice* /* device */,
unsigned int /* button */,
unsigned int /* modifiers */,
XDevice* /* modifier_device */,
Window /* grab_window */,
Bool /* owner_events */,
unsigned int /* event_count */,
XEventClass* /* event_list */,
int /* this_device_mode */,
int /* other_devices_mode */
);
extern int XUngrabDeviceButton(
Display* /* display */,
XDevice* /* device */,
unsigned int /* button */,
unsigned int /* modifiers */,
XDevice* /* modifier_dev */,
Window /* grab_window */
);
extern int XAllowDeviceEvents(
Display* /* display */,
XDevice* /* device */,
int /* event_mode */,
Time /* time */
);
extern int XGetDeviceFocus(
Display* /* display */,
XDevice* /* device */,
Window* /* focus */,
int* /* revert_to */,
Time* /* time */
);
extern int XSetDeviceFocus(
Display* /* display */,
XDevice* /* device */,
Window /* focus */,
int /* revert_to */,
Time /* time */
);
extern XFeedbackState *XGetFeedbackControl(
Display* /* display */,
XDevice* /* device */,
int* /* num_feedbacks */
);
extern void XFreeFeedbackList(
XFeedbackState* /* list */
);
extern int XChangeFeedbackControl(
Display* /* display */,
XDevice* /* device */,
unsigned long /* mask */,
XFeedbackControl* /* f */
);
extern int XDeviceBell(
Display* /* display */,
XDevice* /* device */,
XID /* feedbackclass */,
XID /* feedbackid */,
int /* percent */
);
extern KeySym *XGetDeviceKeyMapping(
Display* /* display */,
XDevice* /* device */,
#if NeedWidePrototypes
unsigned int /* first */,
#else
KeyCode /* first */,
#endif
int /* keycount */,
int* /* syms_per_code */
);
extern int XChangeDeviceKeyMapping(
Display* /* display */,
XDevice* /* device */,
int /* first */,
int /* syms_per_code */,
KeySym* /* keysyms */,
int /* count */
);
extern XModifierKeymap *XGetDeviceModifierMapping(
Display* /* display */,
XDevice* /* device */
);
extern int XSetDeviceModifierMapping(
Display* /* display */,
XDevice* /* device */,
XModifierKeymap* /* modmap */
);
extern int XSetDeviceButtonMapping(
Display* /* display */,
XDevice* /* device */,
unsigned char* /* map[] */,
int /* nmap */
);
extern int XGetDeviceButtonMapping(
Display* /* display */,
XDevice* /* device */,
unsigned char* /* map[] */,
unsigned int /* nmap */
);
extern XDeviceState *XQueryDeviceState(
Display* /* display */,
XDevice* /* device */
);
extern void XFreeDeviceState(
XDeviceState* /* list */
);
extern XExtensionVersion *XGetExtensionVersion(
Display* /* display */,
_Xconst char* /* name */
);
extern XDeviceInfo *XListInputDevices(
Display* /* display */,
int* /* ndevices */
);
extern void XFreeDeviceList(
XDeviceInfo* /* list */
);
extern XDevice *XOpenDevice(
Display* /* display */,
XID /* id */
);
extern int XCloseDevice(
Display* /* display */,
XDevice* /* device */
);
extern int XSetDeviceMode(
Display* /* display */,
XDevice* /* device */,
int /* mode */
);
extern int XSetDeviceValuators(
Display* /* display */,
XDevice* /* device */,
int* /* valuators */,
int /* first_valuator */,
int /* num_valuators */
);
extern XDeviceControl *XGetDeviceControl(
Display* /* display */,
XDevice* /* device */,
int /* control */
);
extern int XChangeDeviceControl(
Display* /* display */,
XDevice* /* device */,
int /* control */,
XDeviceControl* /* d */
);
extern int XSelectExtensionEvent(
Display* /* display */,
Window /* w */,
XEventClass* /* event_list */,
int /* count */
);
extern int XGetSelectedExtensionEvents(
Display* /* display */,
Window /* w */,
int* /* this_client_count */,
XEventClass** /* this_client_list */,
int* /* all_clients_count */,
XEventClass** /* all_clients_list */
);
extern int XChangeDeviceDontPropagateList(
Display* /* display */,
Window /* window */,
int /* count */,
XEventClass* /* events */,
int /* mode */
);
extern XEventClass *XGetDeviceDontPropagateList(
Display* /* display */,
Window /* window */,
int* /* count */
);
extern Status XSendExtensionEvent(
Display* /* display */,
XDevice* /* device */,
Window /* dest */,
Bool /* prop */,
int /* count */,
XEventClass* /* list */,
XEvent* /* event */
);
extern XDeviceTimeCoord *XGetDeviceMotionEvents(
Display* /* display */,
XDevice* /* device */,
Time /* start */,
Time /* stop */,
int* /* nEvents */,
int* /* mode */,
int* /* axis_count */
);
extern void XFreeDeviceMotionEvents(
XDeviceTimeCoord* /* events */
);
extern void XFreeDeviceControl(
XDeviceControl* /* control */
);
extern Atom* XListDeviceProperties(
Display* /* dpy */,
XDevice* /* dev */,
int* /* nprops_return */
);
extern void XChangeDeviceProperty(
Display* /* dpy */,
XDevice* /* dev */,
Atom /* property */,
Atom /* type */,
int /* format */,
int /* mode */,
_Xconst unsigned char * /*data */,
int /* nelements */
);
extern void
XDeleteDeviceProperty(
Display* /* dpy */,
XDevice* /* dev */,
Atom /* property */
);
extern Status
XGetDeviceProperty(
Display* /* dpy*/,
XDevice* /* dev*/,
Atom /* property*/,
long /* offset*/,
long /* length*/,
Bool /* delete*/,
Atom /* req_type*/,
Atom* /* actual_type*/,
int* /* actual_format*/,
unsigned long* /* nitems*/,
unsigned long* /* bytes_after*/,
unsigned char** /* prop*/
);
_XFUNCPROTOEND
#endif /* _XINPUT_H_ */
libXi-1.7.1.901/include/X11/extensions/XInput2.h 0000664 0032045 0000764 00000044544 12150513475 015722 0000000 0000000 /*
* Copyright © 2009 Red Hat, Inc.
*
* 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 (including the next
* paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
*
*/
/* Definitions used by the library and client */
#ifndef _XINPUT2_H_
#define _XINPUT2_H_
#include
#include
#include
#include /* PointerBarrier */
/*******************************************************************
*
*/
typedef struct {
int type;
char* name;
Bool send_core;
Bool enable;
} XIAddMasterInfo;
typedef struct {
int type;
int deviceid;
int return_mode; /* AttachToMaster, Floating */
int return_pointer;
int return_keyboard;
} XIRemoveMasterInfo;
typedef struct {
int type;
int deviceid;
int new_master;
} XIAttachSlaveInfo;
typedef struct {
int type;
int deviceid;
} XIDetachSlaveInfo;
typedef union {
int type; /* must be first element */
XIAddMasterInfo add;
XIRemoveMasterInfo remove;
XIAttachSlaveInfo attach;
XIDetachSlaveInfo detach;
} XIAnyHierarchyChangeInfo;
typedef struct
{
int base;
int latched;
int locked;
int effective;
} XIModifierState;
typedef XIModifierState XIGroupState;
typedef struct {
int mask_len;
unsigned char *mask;
} XIButtonState;
typedef struct {
int mask_len;
unsigned char *mask;
double *values;
} XIValuatorState;
typedef struct
{
int deviceid;
int mask_len;
unsigned char* mask;
} XIEventMask;
typedef struct
{
int type;
int sourceid;
} XIAnyClassInfo;
typedef struct
{
int type;
int sourceid;
int num_buttons;
Atom *labels;
XIButtonState state;
} XIButtonClassInfo;
typedef struct
{
int type;
int sourceid;
int num_keycodes;
int *keycodes;
} XIKeyClassInfo;
typedef struct
{
int type;
int sourceid;
int number;
Atom label;
double min;
double max;
double value;
int resolution;
int mode;
} XIValuatorClassInfo;
/* new in XI 2.1 */
typedef struct
{
int type;
int sourceid;
int number;
int scroll_type;
double increment;
int flags;
} XIScrollClassInfo;
typedef struct
{
int type;
int sourceid;
int mode;
int num_touches;
} XITouchClassInfo;
typedef struct
{
int deviceid;
char *name;
int use;
int attachment;
Bool enabled;
int num_classes;
XIAnyClassInfo **classes;
} XIDeviceInfo;
typedef struct
{
int modifiers;
int status;
} XIGrabModifiers;
typedef unsigned int BarrierEventID;
typedef struct
{
int deviceid;
PointerBarrier barrier;
BarrierEventID eventid;
} XIBarrierReleasePointerInfo;
/**
* Generic XI2 event. All XI2 events have the same header.
*/
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype;
Time time;
} XIEvent;
typedef struct {
int deviceid;
int attachment;
int use;
Bool enabled;
int flags;
} XIHierarchyInfo;
/*
* Notifies the client that the device hierarchy has been changed. The client
* is expected to re-query the server for the device hierarchy.
*/
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype; /* XI_HierarchyChanged */
Time time;
int flags;
int num_info;
XIHierarchyInfo *info;
} XIHierarchyEvent;
/*
* Notifies the client that the classes have been changed. This happens when
* the slave device that sends through the master changes.
*/
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype; /* XI_DeviceChanged */
Time time;
int deviceid; /* id of the device that changed */
int sourceid; /* Source for the new classes. */
int reason; /* Reason for the change */
int num_classes;
XIAnyClassInfo **classes; /* same as in XIDeviceInfo */
} XIDeviceChangedEvent;
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype;
Time time;
int deviceid;
int sourceid;
int detail;
Window root;
Window event;
Window child;
double root_x;
double root_y;
double event_x;
double event_y;
int flags;
XIButtonState buttons;
XIValuatorState valuators;
XIModifierState mods;
XIGroupState group;
} XIDeviceEvent;
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype; /* XI_RawKeyPress, XI_RawKeyRelease, etc. */
Time time;
int deviceid;
int sourceid; /* Bug: Always 0. https://bugs.freedesktop.org//show_bug.cgi?id=34240 */
int detail;
int flags;
XIValuatorState valuators;
double *raw_values;
} XIRawEvent;
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype;
Time time;
int deviceid;
int sourceid;
int detail;
Window root;
Window event;
Window child;
double root_x;
double root_y;
double event_x;
double event_y;
int mode;
Bool focus;
Bool same_screen;
XIButtonState buttons;
XIModifierState mods;
XIGroupState group;
} XIEnterEvent;
typedef XIEnterEvent XILeaveEvent;
typedef XIEnterEvent XIFocusInEvent;
typedef XIEnterEvent XIFocusOutEvent;
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype; /* XI_PropertyEvent */
Time time;
int deviceid; /* id of the device that changed */
Atom property;
int what;
} XIPropertyEvent;
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype;
Time time;
int deviceid;
int sourceid;
unsigned int touchid;
Window root;
Window event;
Window child;
int flags;
} XITouchOwnershipEvent;
typedef struct {
int type; /* GenericEvent */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
int extension; /* XI extension offset */
int evtype;
Time time;
int deviceid;
int sourceid;
Window event;
Window root;
double root_x;
double root_y;
double dx;
double dy;
int dtime;
int flags;
PointerBarrier barrier;
BarrierEventID eventid;
} XIBarrierEvent;
_XFUNCPROTOBEGIN
extern Bool XIQueryPointer(
Display* display,
int deviceid,
Window win,
Window* root,
Window* child,
double* root_x,
double* root_y,
double* win_x,
double* win_y,
XIButtonState *buttons,
XIModifierState *mods,
XIGroupState *group
);
extern Bool XIWarpPointer(
Display* display,
int deviceid,
Window src_win,
Window dst_win,
double src_x,
double src_y,
unsigned int src_width,
unsigned int src_height,
double dst_x,
double dst_y
);
extern Status XIDefineCursor(
Display* display,
int deviceid,
Window win,
Cursor cursor
);
extern Status XIUndefineCursor(
Display* display,
int deviceid,
Window win
);
extern Status XIChangeHierarchy(
Display* display,
XIAnyHierarchyChangeInfo* changes,
int num_changes
);
extern Status XISetClientPointer(
Display* dpy,
Window win,
int deviceid
);
extern Bool XIGetClientPointer(
Display* dpy,
Window win,
int* deviceid
);
extern int XISelectEvents(
Display* dpy,
Window win,
XIEventMask *masks,
int num_masks
);
extern XIEventMask *XIGetSelectedEvents(
Display* dpy,
Window win,
int *num_masks_return
);
extern Status XIQueryVersion(
Display* dpy,
int* major_version_inout,
int* minor_version_inout
);
extern XIDeviceInfo* XIQueryDevice(
Display* dpy,
int deviceid,
int* ndevices_return
);
extern Status XISetFocus(
Display* dpy,
int deviceid,
Window focus,
Time time
);
extern Status XIGetFocus(
Display* dpy,
int deviceid,
Window *focus_return);
extern Status XIGrabDevice(
Display* dpy,
int deviceid,
Window grab_window,
Time time,
Cursor cursor,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask
);
extern Status XIUngrabDevice(
Display* dpy,
int deviceid,
Time time
);
extern Status XIAllowEvents(
Display* display,
int deviceid,
int event_mode,
Time time
);
extern Status XIAllowTouchEvents(
Display* display,
int deviceid,
unsigned int touchid,
Window grab_window,
int event_mode
);
extern int XIGrabButton(
Display* display,
int deviceid,
int button,
Window grab_window,
Cursor cursor,
int grab_mode,
int paired_device_mode,
int owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout
);
extern int XIGrabKeycode(
Display* display,
int deviceid,
int keycode,
Window grab_window,
int grab_mode,
int paired_device_mode,
int owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout
);
extern int XIGrabEnter(
Display* display,
int deviceid,
Window grab_window,
Cursor cursor,
int grab_mode,
int paired_device_mode,
int owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout
);
extern int XIGrabFocusIn(
Display* display,
int deviceid,
Window grab_window,
int grab_mode,
int paired_device_mode,
int owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout
);
extern int XIGrabTouchBegin(
Display* display,
int deviceid,
Window grab_window,
int owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout
);
extern Status XIUngrabButton(
Display* display,
int deviceid,
int button,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers
);
extern Status XIUngrabKeycode(
Display* display,
int deviceid,
int keycode,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers
);
extern Status XIUngrabEnter(
Display* display,
int deviceid,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers
);
extern Status XIUngrabFocusIn(
Display* display,
int deviceid,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers
);
extern Status XIUngrabTouchBegin(
Display* display,
int deviceid,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers
);
extern Atom *XIListProperties(
Display* display,
int deviceid,
int *num_props_return
);
extern void XIChangeProperty(
Display* display,
int deviceid,
Atom property,
Atom type,
int format,
int mode,
unsigned char *data,
int num_items
);
extern void
XIDeleteProperty(
Display* display,
int deviceid,
Atom property
);
extern Status
XIGetProperty(
Display* display,
int deviceid,
Atom property,
long offset,
long length,
Bool delete_property,
Atom type,
Atom *type_return,
int *format_return,
unsigned long *num_items_return,
unsigned long *bytes_after_return,
unsigned char **data
);
extern void
XIBarrierReleasePointers(
Display* display,
XIBarrierReleasePointerInfo *barriers,
int num_barriers
);
extern void
XIBarrierReleasePointer(
Display* display,
int deviceid,
PointerBarrier barrier,
BarrierEventID eventid
);
extern void XIFreeDeviceInfo(XIDeviceInfo *info);
_XFUNCPROTOEND
#endif /* XINPUT2_H */
libXi-1.7.1.901/COPYING 0000664 0032045 0000764 00000010373 11615636372 011100 0000000 0000000 Copyright 1989, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
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
OPEN GROUP 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 Open Group 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 Open Group.
Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Hewlett-Packard not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
Copyright 2008 Peter Hutterer
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
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
AUTHOR 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 author 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 author.
Copyright © 2009 Red Hat, Inc.
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 (including the next
paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
libXi-1.7.1.901/Makefile.in 0000664 0032045 0000764 00000066423 12162667575 012130 0000000 0000000 # Makefile.in generated by automake 1.13.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = .
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/configure $(am__configure_deps) \
$(srcdir)/xi.pc.in COPYING ChangeLog INSTALL README \
config.guess config.sub depcomp install-sh missing ltmain.sh
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/config.h
CONFIG_CLEAN_FILES = xi.pc
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
DATA = $(pkgconfig_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
if test -d "$(distdir)"; then \
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
GZIP_ENV = --best
DIST_TARGETS = dist-bzip2 dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@
ASCIIDOC = @ASCIIDOC@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BASE_CFLAGS = @BASE_CFLAGS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
FOP = @FOP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIB_MAN_DIR = @LIB_MAN_DIR@
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@
MANIFEST_TOOL = @MANIFEST_TOOL@
MAN_SUBSTS = @MAN_SUBSTS@
MISC_MAN_DIR = @MISC_MAN_DIR@
MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRICT_CFLAGS = @STRICT_CFLAGS@
STRIP = @STRIP@
STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@
VERSION = @VERSION@
XFIXES_CFLAGS = @XFIXES_CFLAGS@
XFIXES_LIBS = @XFIXES_LIBS@
XI_CFLAGS = @XI_CFLAGS@
XI_LIBS = @XI_LIBS@
XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@
XMLTO = @XMLTO@
XORG_MAN_PAGE = @XORG_MAN_PAGE@
XORG_SGML_PATH = @XORG_SGML_PATH@
XSLTPROC = @XSLTPROC@
XSL_STYLESHEET = @XSL_STYLESHEET@
XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = src man specs
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = xi.pc
MAINTAINERCLEANFILES = ChangeLog INSTALL
all: all-recursive
.SUFFIXES:
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
$(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
xi.pc: $(top_builddir)/config.status $(srcdir)/xi.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool config.lt
install-pkgconfigDATA: $(pkgconfig_DATA)
@$(NORMAL_INSTALL)
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
done
uninstall-pkgconfigDATA:
@$(NORMAL_UNINSTALL)
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscope: cscope.files
test ! -s cscope.files \
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
clean-cscope:
-rm -f cscope.files
cscope.files: clean-cscope cscopelist
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__post_remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__post_remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__post_remove_distdir)
dist dist-all:
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
$(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
mkdir $(distdir)/_build $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
$(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@test -n '$(distuninstallcheck_dir)' || { \
echo 'ERROR: trying to run $@ with an empty' \
'$$(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
$(am__cd) '$(distuninstallcheck_dir)' || { \
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(DATA)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am: install-pkgconfigDATA
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-pkgconfigDATA
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-am clean clean-cscope clean-generic \
clean-libtool cscope cscopelist-am ctags ctags-am dist \
dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
dist-tarZ dist-xz dist-zip distcheck distclean \
distclean-generic distclean-libtool distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-pkgconfigDATA install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-pkgconfigDATA
.PHONY: ChangeLog INSTALL
INSTALL:
$(INSTALL_CMD)
ChangeLog:
$(CHANGELOG_CMD)
dist-hook: ChangeLog INSTALL
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
libXi-1.7.1.901/missing 0000755 0032045 0000764 00000015331 12153027561 011431 0000000 0000000 #! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
scriptversion=2012-06-26.16; # UTC
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard , 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
case $1 in
--is-lightweight)
# Used by our autoconf macros to check whether the available missing
# script is modern enough.
exit 0
;;
--run)
# Back-compat with the calling convention used by older automake.
shift
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
Supported PROGRAM values:
aclocal autoconf autoheader autom4te automake makeinfo
bison yacc flex lex help2man
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
'g' are ignored when checking the name.
Send bug reports to ."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: unknown '$1' option"
echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
# Run the given program, remember its exit status.
"$@"; st=$?
# If it succeeded, we are done.
test $st -eq 0 && exit 0
# Also exit now if we it failed (or wasn't found), and '--version' was
# passed; such an option is passed most likely to detect whether the
# program is present and works.
case $2 in --version|--help) exit $st;; esac
# Exit code 63 means version mismatch. This often happens when the user
# tries to use an ancient version of a tool on a file that requires a
# minimum version.
if test $st -eq 63; then
msg="probably too old"
elif test $st -eq 127; then
# Program was missing.
msg="missing on your system"
else
# Program was found and executed, but failed. Give up.
exit $st
fi
perl_URL=http://www.perl.org/
flex_URL=http://flex.sourceforge.net/
gnu_software_URL=http://www.gnu.org/software
program_details ()
{
case $1 in
aclocal|automake)
echo "The '$1' program is part of the GNU Automake package:"
echo "<$gnu_software_URL/automake>"
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/autoconf>"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
autoconf|autom4te|autoheader)
echo "The '$1' program is part of the GNU Autoconf package:"
echo "<$gnu_software_URL/autoconf/>"
echo "It also requires GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
esac
}
give_advice ()
{
# Normalize program name to check for.
normalized_program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
printf '%s\n' "'$1' is $msg."
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
case $normalized_program in
autoconf*)
echo "You should only need it if you modified 'configure.ac',"
echo "or m4 files included by it."
program_details 'autoconf'
;;
autoheader*)
echo "You should only need it if you modified 'acconfig.h' or"
echo "$configure_deps."
program_details 'autoheader'
;;
automake*)
echo "You should only need it if you modified 'Makefile.am' or"
echo "$configure_deps."
program_details 'automake'
;;
aclocal*)
echo "You should only need it if you modified 'acinclude.m4' or"
echo "$configure_deps."
program_details 'aclocal'
;;
autom4te*)
echo "You might have modified some maintainer files that require"
echo "the 'automa4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
echo "You should only need it if you modified a '.y' file."
echo "You may want to install the GNU Bison package:"
echo "<$gnu_software_URL/bison/>"
;;
lex*|flex*)
echo "You should only need it if you modified a '.l' file."
echo "You may want to install the Fast Lexical Analyzer package:"
echo "<$flex_URL>"
;;
help2man*)
echo "You should only need it if you modified a dependency" \
"of a man page."
echo "You may want to install the GNU Help2man package:"
echo "<$gnu_software_URL/help2man/>"
;;
makeinfo*)
echo "You should only need it if you modified a '.texi' file, or"
echo "any other file indirectly affecting the aspect of the manual."
echo "You might want to install the Texinfo package:"
echo "<$gnu_software_URL/texinfo/>"
echo "The spurious makeinfo call might also be the consequence of"
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
echo "want to install GNU make:"
echo "<$gnu_software_URL/make/>"
;;
*)
echo "You might have modified some files without having the proper"
echo "tools for further handling them. Check the 'README' file, it"
echo "often tells you about the needed prerequisites for installing"
echo "this package. You may also peek at any GNU archive site, in"
echo "case some other package contains this missing '$1' program."
;;
esac
}
give_advice "$1" | sed -e '1s/^/WARNING: /' \
-e '2,$s/^/ /' >&2
# Propagate the correct exit status (expected to be 127 for a program
# not found, 63 for a program that failed due to version mismatch).
exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:
libXi-1.7.1.901/man/ 0000775 0032045 0000764 00000000000 12162670017 010664 5 0000000 0000000 libXi-1.7.1.901/man/XGetDeviceFocus.man 0000664 0032045 0000764 00000000061 12116564650 014271 0000000 0000000 .so manlibmansuffix/XSetDeviceFocus.libmansuffix
libXi-1.7.1.901/man/XGetExtensionVersion.man 0000664 0032045 0000764 00000005522 12116564643 015425 0000000 0000000 '\" t
.\" Title: xgetextensionversion
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGETEXTENSIONVERSION" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGetExtensionVersion \- query the version of the input extension\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XExtensionVersion *XGetExtensionVersion( Display *display,
char *name);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
name
Specifies the extension to be queried\&. The input
extension name is definedin the header file XI\&.h\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetExtensionVersion request is deprecated and should not
be used in XI2 applications\&. Clients issuing a XGetExtensionVersion
request will not be able to use XI2 features\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetExtensionVersion request queries the version of the input
extension, and returns an XExtensionVersion structure\&. This structure
contains a major_version and minor_version number which can be compared
with constants defined in XI\&.h\&. Support for additional protocol
requests added to the input extension after its initial release
is indicated by a version number corresponding to the added
requests\&. Each version contains all the protocol requests
contained by previous versions\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
You should use XFree to free the XExtensionVersion structure\&.
.fi
.if n \{\
.RE
.\}
.SH "STRUCTURES"
.sp
.if n \{\
.RS 4
.\}
.nf
This request returns an XExtensionVersion structure\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
int present;
short major_version;
short minor_version;
} XExtensionVersion;
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGetDeviceMotionEvents.man 0000664 0032045 0000764 00000012512 12116564643 015652 0000000 0000000 '\" t
.\" Title: xgetdevicemotionevents
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGETDEVICEMOTIONEVEN" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGetDeviceMotionEvents, XDeviceTimeCoord \- get device motion history
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XDeviceTimeCoord *XGetDeviceMotionEvents( Display *display,
XDevice *device,
Time start,
Time stop,
int *nevents_return,
int *mode_return,
int *axis_count_return);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose motion history is to be
queried\&.
.fi
.sp
.nf
start, stop
Specify the time interval in which the events are
returned from the motionhistory buffer\&.You can pass a
timestamp or CurrentTime\&.
.fi
.sp
.nf
nevents_return
Returns the number of events from the motion history
buffer\&.
.fi
.sp
.nf
mode_return
Returns the mode of the device (Absolute or Relative)\&.
.fi
.sp
.nf
axis_count_return
Returns the count of axes being reported\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The server may retain the recent history of the device motion
and do so to a finer granularity than is reported by
DeviceMotionNotify events\&. The XGetDeviceMotionEvents request
makes this history available\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetDeviceMotionEvents request returns all events in the
motion history buffer that fall between the specified start and
stop times, inclusive\&. If the start time is later than the stop
time or if the start time is in the future, no events are
returned\&. If the stop time is in the future, it is equivalent
to specifying CurrentTime\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The mode indicates whether the device is reporting absolute
positional data (mode = Absolute ) or relative motion data
(mode = Relative )\&. Some devices allow their mode to be changed
via the XSetDeviceMode request\&. These constants are defined in
the file XI\&.h\&. The axis_count returns the number of axes or
valuators being reported by the device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetDeviceMotionEvents can generate a BadDevice, or BadMatch
error\&.
.fi
.if n \{\
.RE
.\}
.sp
Structures
.sp
.if n \{\
.RS 4
.\}
.nf
The XDeviceTimeCoord structure contains:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
Time time;
int *data;
} XDeviceTimeCoord;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The time member is set to the time, in milliseconds\&. The data
member is a pointer to an array of integers\&. These integers are
set to the values of each valuator or axis reported by the
device\&. There is one element in the array per axis of motion
reported by the device\&. The value of the array elements depends
on the mode of the device\&. If the mode is Absolute, the values
are the raw values generated by the device\&. These may be scaled
by client programs using the maximum values that the device can
generate\&. The maximum value for each axis of the device is
reported in the max_val field of the XAxisInfo returned by the
XListInputDevices request\&. If the mode is Relative, the data
values are the relative values generated by the device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
You should use XFreeDeviceMotionEvents to free the data
returned by this request\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Errors returned by this request: BadDevice, BadMatch\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGetDeviceMotionEvents
request is made specifying a device that has no
valuators and reports no axes of motion\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XSetDeviceButtonMapping.man 0000664 0032045 0000764 00000011311 12116564650 016015 0000000 0000000 '\" t
.\" Title: xsetdevicebuttonmapping
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XSETDEVICEBUTTONMAPP" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XSetDeviceButtonMapping, XGetDeviceButtonMapping \- query or change device button mappings
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XSetDeviceButtonMapping( Display *display,
XDevice *device,
unsigned char map[],
int nmap);
.fi
.sp
.nf
int XGetDeviceButtonMapping( Display *display,
XDevice *device,
unsigned char map_return[],
int nmap);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose button mapping is to be
queried or changed\&.
.fi
.sp
.nf
map
Specifies the mapping list\&.
.fi
.sp
.nf
map_return
Returns the mapping list\&.
.fi
.sp
.nf
nmap
Specifies the number of items in the mapping list\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XSetDeviceButtonMapping request sets the mapping of the
specified device\&. If it succeeds, the X server generates a
DeviceMappingNotify event, and XSetDeviceButtonMapping returns
MappingSuccess\&. Element map[i] defines the logical button
number for the physical button i+1\&. The length of the list must
be the same as XGetDeviceButtonMapping would return, or a
BadValue error results\&. A zero element disables a button, and
elements are not restricted in value by the number of physical
buttons\&. However, no two elements can have the same nonzero
value, or a BadValue error results\&. If any of the buttons to be
altered are logically in the down state,
XSetDeviceButtonMapping returns MappingBusy, and the mapping is
not changed\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XSetDeviceButtonMapping can generate BadDevice, BadMatch, and
BadValue errors\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetDeviceButtonMapping request returns the current mapping
of the specified device\&. Buttons are numbered starting from
one\&.XGetDeviceButtonMapping returns the number of physical
buttons actually on the device\&. The nominal mapping for a
device is map[i]=i+1\&. The nmap argument specifies the length of
the array where the device mapping is returned, and only the
first nmap elements are returned in map_return\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetDeviceButtonMapping can generate BadDevice or BadMatch
errors\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGetDeviceButtonMapping or
XSetDeviceButtonMapping request was made specifying a
device that has no buttons\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeDeviceKeyboardControl(libmansuffix), XChangeDeviceKeyMapping(libmansuffix),
XChangeDeviceModifierMapping(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XDeviceTimeCoord.man 0000664 0032045 0000764 00000000070 12116564643 014441 0000000 0000000 .so manlibmansuffix/XGetDeviceMotionEvents.libmansuffix
libXi-1.7.1.901/man/XCloseDevice.man 0000664 0032045 0000764 00000000055 12116564646 013627 0000000 0000000 .so manlibmansuffix/XOpenDevice.libmansuffix
libXi-1.7.1.901/man/XListInputDevices.txt 0000664 0032045 0000764 00000020624 12110553734 014736 0000000 0000000 XLISTINPUTDEVICES(libmansuffix)
===============================
NAME
----
XListInputDevices, XFreeDeviceList - list available input
devices
SYNOPSIS
--------
#include
XDeviceInfo *XListInputDevices( Display *display,
int *ndevices_return);
int XFreeDeviceList( XDeviceInfo *list);
display
Specifies the connection to the X server.
ndevices_return
Specifies a pointer to a variable where the number of
available devices canbe returned.
list
Specifies the list of devices to free. The
XFreeDeviceList functionfrees the list of available
extension input devices.
DESCRIPTION
-----------
The XListInputDevices request lists the available input
devices. This list includes the core keyboard and any physical
input device currently accessible through the X server, and any
input devices that are not currently accessible through the X
server but could be accessed if requested.
A master pointer is a virtual pointer device that does not
represent a physical device. It is visually represented through
a cursor. A master keyboard is a virtual keyboard device that
does not represent a physical device. It is virtually
representd through a keyboard focus. A master pointer and a
master keyboard are always paired (i.e. if shift is pressed on
the master keyboard, a pointer click would be a shift-click).
Multiple master pointer/keyboard pairs can exist.
X servers supporting the X Input Extension version 2,
XListInputDevices only returns the first master pointer, the
first master keyboard and all slave devices. Additional master
devices are not listed.
Physical devices (so-called slave devices) are attached to
either a master pointer or a master keyboard, depending on
their capabilities. If a slave device generates an event, the
event is also generated by the respective master device.
Multiple slave devices can be attached to a single master
device.
Some server implementations may make all physical input devices
available at the time the server is initialized. Others may
wait until requested by a client to access an input device. In
the latter case, it is possible that an input device will be
listed as available at one time but not at another.
For each input device available to the server, the
XListInputDevices request returns an XDeviceInfo structure.
That structure contains a pointer to a list of structures, each
of which contains information about one class of input
supported by the device. The XDeviceInfo structure is defined
as follows:
typedef struct _XDeviceInfo {
XID id;
Atom type;
char *name;
int num_classes;
int use;
XAnyClassPtr inputclassinfo;
} XDeviceInfo;
The id is a number in the range 0-128 that uniquely identifies
the device. It is assigned to the device when it is initialized
by the server.
The type field is of type Atom and indicates the nature of the
device. The type will correspond to one of the following strings
(defined in the header file XI.h):
XI_MOUSE XI_TABLET XI_KEYBOARD XI_TOUCHSCREEN XI_TOUCHPAD
XI_BUTTONBOX XI_BARCODE XI_TRACKBALL XI_QUADRATURE XI_ID_MODULE
XI_ONE_KNOB XI_NINE_KNOB XI_KNOB_BOX XI_SPACEBALL XI_DATAGLOVE
XI_EYETRACKER XI_CURSORKEYS XI_FOOTMOUSE XI_JOYSTICK
These strings may be used in an XInternAtom request to return
an atom that can be compared with the type field of the
XDeviceInfo structure.
The name field contains a pointer to a null-terminated string
that serves as identifier of the device. This identifier may be
user-configured or automatically assigned by the server.
The num_classes field is a number in the range 0-255 that
specifies the number of input classes supported by the device
for which information is returned by ListInputDevices. Some
input classes, such as class Focus and class Proximity do not
have any information to be returned by ListInputDevices.
All devices provide an AttachClass. This class specifies the
master device a given slave device is attached to. For master
devices, the class specifies the respective paired master
device.
The use field specifies how the device is currently being used.
If the value is IsXKeyboard, the device is a master keyboard.
If the value is IsXPointer, the device is a master pointer. If
the value is IsXExtensionPointer, the device is a slave
pointer. If the value is IsXExtensionKeyboard, the device is a
slave keyboard. If the value is IsXExtensionDevice, the device
is available for use as an extension device.
The inputclassinfo field contains a pointer to the first
input-class specific data. The first two fields are common to
all classes.
The class field is a number in the range 0-255. It uniquely
identifies the class of input for which information is
returned. Currently defined classes are KeyClass, ButtonClass,
and ValuatorClass.
The length field is a number in the range 0- 255. It specifies
the number of bytes of data that are contained in this input
class. The length includes the class and length fields.
The XKeyInfo structure describes the characteristics of the
keys on the device. It is defined as follows:
typedef struct _XKeyInfo {
XID class;
int length;
unsigned short min_keycode;
unsigned short max_keycode;
unsigned short num_keys;
} XKeyInfo;
min_keycode is of type KEYCODE. It specifies the minimum
keycode that the device will report. The minimum keycode will
not be smaller than 8.
max_keycode is of type KEYCODE. It specifies the maximum
keycode that the device will report. The maximum keycode will
not be larger than 255.
num_keys specifies the number of keys that the device has.
The XButtonInfo structure defines the characteristics of the
buttons on the device. It is defined as follows:
typedef struct _XButtonInfo {
XID class;
int length;
short num_buttons;
} XButtonInfo;
num_buttons specifies the number of buttons that the device
has.
The XValuatorInfo structure defines the characteristics of the
valuators on the device. It is defined as follows:
typedef struct _XValuatorInfo {
XID class;
int length;
unsigned char num_axes;
unsigned char mode;
unsigned long motion_buffer;
XAxisInfoPtr axes;
} XValuatorInfo;
num_axes contains the number of axes the device supports.
mode is a constant that has one of the following values:
Absolute or Relative. Some devices allow the mode to be changed
dynamically via the SetDeviceMode request.
motion_buffer_size is a cardinal number that specifies the
number of elements that can be contained in the motion history
buffer for the device.
The axes field contains a pointer to an XAxisInfo structure.
The XAxisInfo structure is defined as follows:
typedef struct _XAxisInfo {
int resolution;
int min_value;
int max_value;
} XAxisInfo;
The resolution contains a number in counts/meter.
The min_val field contains a number that specifies the minimum
value the device reports for this axis. For devices whose mode
is Relative, the min_val field will contain 0.
The max_val field contains a number that specifies the maximum
value the device reports for this axis. For devices whose mode
is Relative, the max_val field will contain 0.
The XAttachInfo structure is defined as follows:
typedef struct _XAttachInfo {
int attached;
} XAttachInfo;
If the device is a slave device, attached specifies the device
ID of the master device this device is attached to. If the
device is not attached to a master device, attached is
Floating. If the device is a master device, attached specifies
the device ID of the master device this device is paired with.
To free the XDeviceInfo array created by XListInputDevices, use
XFreeDeviceList.
libXi-1.7.1.901/man/XGetSelectedExtensionEvents.man 0000664 0032045 0000764 00000000067 12116564646 016717 0000000 0000000 .so manlibmansuffix/XSelectExtensionEvent.libmansuffix
libXi-1.7.1.901/man/XISelectEvents.man 0000664 0032045 0000764 00000010740 12116564656 014162 0000000 0000000 '\" t
.\" Title: xiselectevents
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XISELECTEVENTS" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XISelectEvents, XIGetSelectedEvents \- select for or get selected XI2 events on the window\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XISelectEvents( Display *display,
Window win,
XIEventMask *masks,
int num_masks);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
masks
Device event mask\&.
.fi
.sp
.nf
num_masks
Number of masks in masks\&.
.fi
.sp
.nf
win
Specifies the window\&.
.fi
.sp
.nf
XIEventMask *XIGetSelectedEvents( Display *display,
Window win,
int *num_masks_return);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
num_masks_return
Number of masks in the return value\&.
.fi
.sp
.nf
win
Specifies the window\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
XI2 events must be selected using XISelectEvents\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XISelectEvents sets the event mask for this client on win\&.
Further events are only reported to this client if the event
type matches the selected event mask\&. The masks overrides the
previously selected event mask for the given device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If deviceid is a valid device, the event mask is selected only
for this device\&. If deviceid is XIAllDevices or
XIAllMasterDevices, the event mask is selected for all devices
or all master devices, respectively\&. The effective event mask
is the bit\-wise OR of the XIAllDevices, XIAllMasterDevices and
the respective device\*(Aqs event mask\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
int deviceid;
int mask_len;
unsigned char* mask;
} XIEventMask;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The mask_len specifies the length of mask in bytes\&. mask is a
binary mask in the form of (1 << event type)\&. deviceid must be
either a device or XIAllDevices or XIAllMasterDevices\&. A client
may submit several masks with the same deviceid in one request
but only the last mask will be effective\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XISelectEvents can generate a BadValue, a BadDevice, and a
BadWindow error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIGetSelectedEvents returns the events selected by this client on the given
window\&. If no events were selected on this window, XIGetSelectedEvents
returns NULL and num_masks_return is set to 0\&. If an internal error occurs,
XIGetSelectedEvents returns NULL and num_masks_return is set to \-1\&.
Otherwise, XIGetSelectedEvent returns the selected event masks for all
devices including the masks for XIAllDevices and XIAllMasterDevices
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The caller must free the returned data using XFree()\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
A value is outside of the permitted range\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XDeviceBell.man 0000664 0032045 0000764 00000007333 12116564641 013441 0000000 0000000 '\" t
.\" Title: xdevicebell
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XDEVICEBELL" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XDeviceBell \- ring a bell on a device supported through the input extension
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XDeviceBell( Display *display,
XDevice *device,
XID feedbackclass,
XID feedbackid,
int percent);
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device with which the bell is associated\&.
.fi
.sp
.nf
feedbackclass
Specifies the class of the feedback with which the bell
is associated\&.
.fi
.sp
.nf
feedbackid
Specifies the id of the feedback with which the bell is
associated\&.
.fi
.sp
.nf
percent
Specifies the volume in the range \-100 to 100 at which
the bell should be rung\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XDeviceBell request causes the server to ring a bell on the
specified feedback of the specified device, if possible\&. The
specified volume is relative to the base volume for the bell\&.
If an invalid device is specified, a BadDevice error will be
returned\&. The feedbackclass and feedbackid parameters contain
values returned by an XGetFeedbackControl request and uniquely
identify the bell to ring\&. If a feedbackclass is specified that
does not support a bell, or if a nonexistent feedbackid is
specified, or a percent value is specified that is not in the
range \-100 to 100, a BadValue error will be returned\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The volume at which the bell is rung when the percent argument
is nonnegative is: base \- [(base * percent) / 100] + percent
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The volume at which the bell rings when the percent argument is
negative is: base + [(base * percent) / 100]
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
To change the base volume of the bell, use
XChangeFeedbackControl\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XDeviceBell can generate a BadDevice or a BadValue error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist, or has not been opened by this client
via XOpenInputDevice\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
An invalid feedbackclass, feedbackid, or percent value
was specified\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeFeedbackControl(libmansuffix), XBell(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIChangeHierarchy.man 0000664 0032045 0000764 00000012520 12116564652 014574 0000000 0000000 '\" t
.\" Title: xichangehierarchy
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XICHANGEHIERARCHY" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIChangeHierarchy \- change the device hierarchy\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XIChangeHierarchy( Display *display,
XIAnyHierarchyChangeInfo *changes,
int num_changes);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
num_changes
Specifies the number of elements in changes\&.
.fi
.sp
.nf
changes
Specifies the changes to be made\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
XIChangeHierarchy modifies the device hierarchy by creating or
removing master devices or changing the attachment of slave
devices\&. If num_changes is non\-zero, changes is an array of
XIAnyHierarchyChangeInfo structures\&. If num_changes is equal or less than
zero, XIChangeHierarchy does nothing\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIChangeHierarchy processes changes in order, effective
immediately\&. If an error occurs, processing is aborted and the
error is reported to the client\&. Changes already made remain
effective\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The list of changes is any combination of
XIAnyHierarchyChangeInfo\&. The type of a hierarchy change can be
XIAddMaster, XIRemoveMaster, XIAttachSlave or XIDetachSlave\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef union {
int type;
XIAddMasterInfo add;
XIRemoveMasterInfo remove;
XIAttachSlave attach;
XIDetachSlave detach;
} XIAnyHierarchyChangeInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
int type; /* XIAddMaster */
char* name;
Bool send_core;
Bool enable;
} XIAddMasterInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
int type; /* XIRemoveMaster */
int deviceid;
int return_mode;
int return_pointer;
int return_keyboard;
} XIRemoveMasterInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
int type; /* XIAttachSlave */
int deviceid;
int new_master;
} XIAttachSlaveInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
int type; /* XIDetachSlave */
int deviceid;
} XIDetachSlaveInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIAddMasterInfo creates a new master pointer and a new
master keyboard labelled "name pointer" and "name keyboard"
respectively\&. If sendCore is True, the devices will send core
events\&. If enable is True, the device is enabled immediately\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIAddMasterInfo can generate a BadValue error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIRemoveMasterInfo removes device and its paired master device\&.
If returnMode is XIAttachToMaster, all pointers attached to
device or its paired master device are attached to
returnPointer\&. Likewise, all keyboards are attached to
returnKeyboard\&. If returnMode is XIFloating, all attached
devices are set to floating\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIRemoveMasterInfo can generate a BadValue and a BadDevice
error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIAttachSlaveInfo attaches device to newMaster\&. If the device
is currently attached to a master device, it is detached from
the master device and attached to the new master device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIAttachSlaveInfo can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIDettachSlaveInfo deattaches device from the current master
device and sets it floating\&. If the device is already floating,
no changes are made\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIDetachSlaveInfo can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIChangeHierarchy generates an XIHierarchyEvent if any
modifications were successful\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a appropriate for the type of change\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls out of the allowed range\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIQueryVersion.txt 0000664 0032045 0000764 00000004145 12110553734 014264 0000000 0000000 XIQUERYVERSION(libmansuffix)
============================
NAME
----
XIQueryVersion - announce and query the support XI2 version.
SYNOPSIS
--------
#include
Status XIQueryVersion( Display *display,
int *major_version_inout,
int *minor_version_inout);
display
Specifies the connection to the X server.
major_version_inout
Specifies the client's supported XI2 version, and
returns the server's supported version.
minor_version_inout
Specifies the client's supported XI2 version, and
returns the server's supported version.
DESCRIPTION
-----------
XIQueryVersion announces the client's supported XI2 version to
the server and returns server's supported X Input version. Clients
are required to use XIQueryVersion instead of XGetExtensionVersion
if they use XI2 calls. The server may treat a client differently
depending on the supported version announced by the client.
The major_version_inout must be 2 or greater, otherwise a BadValue
error occurs.
If the server does not support XI2, XIQueryVersion returns BadRequest
to the client. Otherwise, XIQueryVersion returns Success. In both
cases major_version_inout and minor_version_inout are set to the
server's supported version.
Consecutive calls to XIQueryVersion by the same client always return the
first returned major.minor version. If the client requests a version
lower than the first returned major.minor version in a subsequent call, a
BadValue error occurs.
XIQueryVersion can generate a BadValue error.
EXAMPLES
--------
int rc;
int major = 2;
int minor = 0;
rc = XIQueryVersion(dpy, &major, &minor);
if (rc == Success)
printf("XI2 supported. (%d.%d)\n", major, minor);
else if (rc == BadRequest)
printf("No XI2 support. (%d.%d only)\n", major, minor);
else
printf("Internal error\n");
DIAGNOSTICS
-----------
BadValue
A value is outside of the permitted range.
libXi-1.7.1.901/man/XDeviceBell.txt 0000664 0032045 0000764 00000004376 12110553734 013504 0000000 0000000 XDEVICEBELL(libmansuffix)
=========================
NAME
----
XDeviceBell - ring a bell on a device supported through the
input extension
SYNOPSIS
--------
#include
Status XDeviceBell( Display *display,
XDevice *device,
XID feedbackclass,
XID feedbackid,
int percent);
display
Specifies the connection to the X server.
device
Specifies the device with which the bell is associated.
feedbackclass
Specifies the class of the feedback with which the bell
is associated.
feedbackid
Specifies the id of the feedback with which the bell is
associated.
percent
Specifies the volume in the range -100 to 100 at which
the bell should be rung.
DESCRIPTION
-----------
The XDeviceBell request causes the server to ring a bell on the
specified feedback of the specified device, if possible. The
specified volume is relative to the base volume for the bell.
If an invalid device is specified, a BadDevice error will be
returned. The feedbackclass and feedbackid parameters contain
values returned by an XGetFeedbackControl request and uniquely
identify the bell to ring. If a feedbackclass is specified that
does not support a bell, or if a nonexistent feedbackid is
specified, or a percent value is specified that is not in the
range -100 to 100, a BadValue error will be returned.
The volume at which the bell is rung when the percent argument
is nonnegative is: base - [(base * percent) / 100] + percent
The volume at which the bell rings when the percent argument is
negative is: base + [(base * percent) / 100]
To change the base volume of the bell, use
XChangeFeedbackControl.
XDeviceBell can generate a BadDevice or a BadValue error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist, or has not been opened by this client
via XOpenInputDevice.
BadValue
An invalid feedbackclass, feedbackid, or percent value
was specified.
SEE ALSO
--------
XChangeFeedbackControl(libmansuffix), XBell(libmansuffix)
libXi-1.7.1.901/man/XGetFeedbackControl.man 0000664 0032045 0000764 00000024573 12116564643 015137 0000000 0000000 '\" t
.\" Title: xgetfeedbackcontrol
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGETFEEDBACKCONTROL" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGetFeedbackControl, XChangeFeedbackControl \- query and change input device feedbacks
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XFeedbackState *XGetFeedbackControl( Display *display,
XDevice *device,
int *num_feedbacks);
.fi
.sp
.nf
int XChangeFeedbackControl( Display *display,
XDevice *device,
Mask mask,
XFeedbackControl *control);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose feedbacks are to be queried
or modified\&.
.fi
.sp
.nf
num_feedbacks
Specifies an address into which the number of feedbacks
supported by thedevice is to be returned\&.
.fi
.sp
.nf
mask
Specifies a mask specific to each type of feedback that
describes howthe feedback is to be modified\&.
.fi
.sp
.nf
control
Specifies the address of an XFeedbackControl structure
that containsthe new values for the feedback\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
These requests are provided to manipulate those input devices
that support feedbacks\&. A BadMatch error will be generated if
the requested device does not support feedbacks\&. Whether or not
a given device supports feedbacks can be determined by
examining the information returned by the XOpenDevice request\&.
For those devices that support feedbacks, XOpenDevice will
return an XInputClassInfo structure with the input_class field
equal to the constant FeedbackClass (defined in the file XI\&.h)\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetFeedbackControl request returns a pointer to a list of
XFeedbackState structures\&. Each item in this list describes one
of the feedbacks supported by the device\&. The items are
variable length, so each contains its length to allow traversal
to the next item in the list\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The feedback classes that are currently defined are:
KbdFeedbackClass, PtrFeedbackClass, StringFeedbackClass,
IntegerFeedbackClass, LedFeedbackClass, and BellFeedbackClass\&.
These constants are defined in the file XI\&.h\&. An input device
may support zero or more classes of feedback, and may support
multiple feedbacks of the same class\&. Each feedback contains a
class identifier and an id that is unique within that class for
that input device\&. The id is used to identify the feedback when
making an XChangeFeedbackControl request\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetFeedbackControl can generate a BadDevice or BadMatch error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XChangeFeedbackControl request modifies the values of one
feedback on the specified device\&. The feedback is identified by
the id field of the XFeedbackControl structure that is passed
with the request\&. The fields of the feedback that are to be
modified are identified by the bits of the mask that is passed
with the request\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeFeedbackControl can generate a BadDevice, BadMatch, or
BadValue error\&.
.fi
.if n \{\
.RE
.\}
.SS "Structures"
.sp
.if n \{\
.RS 4
.\}
.nf
Each class of feedback is described by a structure specific to
that class\&. These structures are defined in the file XInput\&.h\&.
XFeedbackState and XFeedbackControl are generic structures that
contain three fields that are at the beginning of each class of
feedback:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
} XFeedbackState, XFeedbackControl;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XKbdFeedbackState structure defines the attributes that are
returned for feedbacks equivalent to those on the X keyboard\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int global_auto_repeat;
char auto_repeats[32];
} XKbdFeedbackState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XPtrFeedbackState structure defines the attributes that are
returned for feedbacks equivalent to those on the the X
pointer\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XIntegerFeedbackState structure defines attributes that are
returned for integer feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int resolution;
int minVal;
int maxVal;
} XIntegerFeedbackState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XStringFeedbackState structure defines the attributes that
are returned for string feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int max_symbols;
int num_syms_supported;
KeySym *syms_supported;
} XStringFeedbackState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XBellFeedbackState structure defines the attributes that
are returned for bell feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XLedFeedbackState structure defines the attributes that are
returned for LED feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int led_values;
} XLedFeedbackState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XPrtFeedbackControl structure defines the attributes that
can be controlled for pointer feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackControl;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XKbdFeedbackControl structure defines the attributes that
can be controlled for keyboard feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int led_value;
int key;
int auto_repeat_mode;
} XKbdFeedbackControl;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XStringFeedbackControl structure defines the attributes
that can be controlled for string feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int num_keysyms;
KeySym *syms_to_display;
} XStringFeedbackControl;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XIntegerFeedbackControl structure defines the attributes
that can be controlled for integer feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int int_to_display;
} XIntegerFeedbackControl;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XBellFeedbackControl structure defines the attributes that
can be controlled for bell feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackControl;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XLedFeedbackControl structure defines the attributes that
can be controlled for LED feedbacks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
XID id;
int led_mask;
int led_values;
} XLedFeedbackControl;
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGetFeedbackControl request
was made specifying a device that has no feedbacks, or
an XChangeFeedbackControl request was made with an
XFeedbackControl structure that contains an invalid
feedback type\&. It may also occur if an invalid
combination of mask bits is specified ( DvKey but no
DvAutoRepeatMode for keyboard feedbacks), or if an
invalid KeySym is specified for a string feedback\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the XChangeFeedbackControl request\&. Unless a
specific range is specified for an argument, the full
range defined by the argument\*(Aqs type is accepted\&. Any
argument defined as a set of alternatives can generate
this error\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/Makefile.in 0000664 0032045 0000764 00000052377 12162667575 012706 0000000 0000000 # Makefile.in generated by automake 1.13.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
#
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
#
# 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 (including the next
# paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
#
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
# Generate man pages and shadow pages from .txt and then from DocBook XML
@HAVE_DOCTOOLS_TRUE@am__append_1 = .txt .xml
subdir = man
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/src/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(libmandir)"
DATA = $(libman_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@
ASCIIDOC = @ASCIIDOC@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BASE_CFLAGS = @BASE_CFLAGS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
FOP = @FOP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIB_MAN_DIR = @LIB_MAN_DIR@
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@
MANIFEST_TOOL = @MANIFEST_TOOL@
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
# Unable to use __libmansuffix__ as underscores are lost in txt --> xml conversion
# asciidoc is generating [FIXME...] values in the .TH line we should fix.
# asciidoc generates shadow page references without the man section directory
MAN_SUBSTS = @MAN_SUBSTS@ -e 's/libmansuffix/$(LIB_MAN_SUFFIX)/g' -e \
's/\[FIXME: source\]/$(XORG_MAN_PAGE)/' -e 's/\[FIXME: \
manual\]/XINPUT FUNCTIONS/' -e 's/^\.so X/.so \
man$(LIB_MAN_SUFFIX)\/X/'
MISC_MAN_DIR = @MISC_MAN_DIR@
MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRICT_CFLAGS = @STRICT_CFLAGS@
STRIP = @STRIP@
STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@
VERSION = @VERSION@
XFIXES_CFLAGS = @XFIXES_CFLAGS@
XFIXES_LIBS = @XFIXES_LIBS@
XI_CFLAGS = @XI_CFLAGS@
XI_LIBS = @XI_LIBS@
XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@
XMLTO = @XMLTO@
XORG_MAN_PAGE = @XORG_MAN_PAGE@
XORG_SGML_PATH = @XORG_SGML_PATH@
XSLTPROC = @XSLTPROC@
XSL_STYLESHEET = @XSL_STYLESHEET@
XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
libmandir = $(LIB_MAN_DIR)
# Source files for X Input v2 man pages
XI2_txt = \
XIBarrierReleasePointer.txt \
XIChangeHierarchy.txt \
XIDefineCursor.txt \
XIGrabButton.txt \
XIGrabDevice.txt \
XIGrabEnter.txt \
XIQueryDevice.txt \
XIQueryPointer.txt \
XIQueryVersion.txt \
XISelectEvents.txt \
XISetClientPointer.txt \
XISetFocus.txt \
XIWarpPointer.txt \
XIListProperties.txt \
XIChangeProperty.txt
# Source files for X Input v1 man pages
libman_txt = \
XAllowDeviceEvents.txt \
XChangeDeviceDontPropagateList.txt \
XChangeKeyboardDevice.txt \
XChangePointerDevice.txt \
XDeviceBell.txt \
XGetDeviceControl.txt \
XGetDeviceKeyMapping.txt \
XGetDeviceModifierMapping.txt \
XGetDeviceMotionEvents.txt \
XGetDeviceProperty.txt \
XGetExtensionVersion.txt \
XGetFeedbackControl.txt \
XGrabDeviceButton.txt \
XGrabDeviceKey.txt \
XGrabDevice.txt \
XListDeviceProperties.txt \
XListInputDevices.txt \
XOpenDevice.txt \
XQueryDeviceState.txt \
XSelectExtensionEvent.txt \
XSendExtensionEvent.txt \
XSetDeviceButtonMapping.txt \
XSetDeviceFocus.txt \
XSetDeviceMode.txt \
XSetDeviceValuators.txt \
$(XI2_txt)
# Name of DocBook XML files generated from .txt files by asciidoc
libman_xml = $(libman_txt:.txt=.xml)
# Shadow man pages are simply links to a main man page.
# They are created by the xmlto command when generating man pages from DocBook
# The shadow man page contains a gtroff .so request to include the main man page
XI2_shadows = \
XIBarrierReleasePointers.man \
XIUndefineCursor.man \
XIUngrabButton.man \
XIGrabKeycode.man \
XIUngrabKeycode.man \
XIUngrabDevice.man \
XIUngrabEnter.man \
XIGrabFocusIn.man \
XIUngrabFocusIn.man \
XIGetClientPointer.man \
XIGetFocus.man \
XIGetSelectedEvents.man \
XIDeleteProperty.man \
XIGetProperty.man \
XIFreeDeviceInfo.man \
XIGrabTouchBegin.man \
XIUngrabTouchBegin.man
libman_shadows = \
XGetDeviceDontPropagateList.man \
XChangeDeviceControl.man \
XChangeDeviceKeyMapping.man \
XSetDeviceModifierMapping.man \
XChangeFeedbackControl.man \
XUngrabDeviceButton.man \
XUngrabDeviceKey.man \
XUngrabDevice.man \
XDeviceTimeCoord.man \
XFreeDeviceList.man \
XCloseDevice.man \
XGetSelectedExtensionEvents.man \
XGetDeviceButtonMapping.man \
XGetDeviceFocus.man \
XChangeDeviceProperty.man \
XDeleteDeviceProperty.man \
$(XI2_shadows)
# Name of man page files generated from DocBook XML files by xmlto
libman_PRE = $(libman_txt:.txt=.man) $(libman_shadows)
@INSTALL_MANPAGES_TRUE@libman_DATA = $(libman_PRE:.man=.$(LIB_MAN_SUFFIX))
EXTRA_DIST = $(libman_txt) $(libman_PRE)
CLEANFILES = $(libman_DATA) *.libmansuffix
MAINTAINERCLEANFILES = $(libman_PRE) *.xml
SUFFIXES = .man .$(LIB_MAN_SUFFIX) $(am__append_1)
all: all-am
.SUFFIXES:
.SUFFIXES: .man .$(LIB_MAN_SUFFIX) .txt .xml
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign man/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-libmanDATA: $(libman_DATA)
@$(NORMAL_INSTALL)
@list='$(libman_DATA)'; test -n "$(libmandir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(libmandir)'"; \
$(MKDIR_P) "$(DESTDIR)$(libmandir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libmandir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(libmandir)" || exit $$?; \
done
uninstall-libmanDATA:
@$(NORMAL_UNINSTALL)
@list='$(libman_DATA)'; test -n "$(libmandir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(libmandir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(libmandir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-libmanDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-libmanDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am \
install-libmanDATA install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
uninstall-am uninstall-libmanDATA
# Dependencies for X Input v1 shadow pages
XGetDeviceDontPropagateList.man: XChangeDeviceDontPropagateList.man
XChangeDeviceControl.man: XGetDeviceControl.man
XChangeDeviceKeyMapping.man: XGetDeviceKeyMapping.man
XSetDeviceModifierMapping.man: XGetDeviceModifierMapping.man
XDeviceTimeCoord.man: XGetDeviceMotionEvents.man
XChangeFeedbackControl.man: XGetFeedbackControl.man
XUngrabDeviceButton.man: XGrabDeviceButton.man
XUngrabDeviceKey.man: XGrabDeviceKey.man
XUngrabDevice.man: XGrabDevice.man
XFreeDeviceList.man: XListInputDevices.man
XCloseDevice.man: XOpenDevice.man
XGetSelectedExtensionEvents.man: XSelectExtensionEvent.man
XGetDeviceButtonMapping.man: XSetDeviceButtonMapping.man
XGetDeviceFocus.man: XSetDeviceFocus.man
XChangeDeviceProperty.man: XGetDeviceProperty.man
XDeleteDeviceProperty.man: XGetDeviceProperty.man
# Dependencies for X Input v2 shadow pages
XIUndefineCursor.man: XIDefineCursor.man
XIUngrabButton.man XIGrabKeycode.man XIUngrabKeycode.man XIGrabTouchBegin.man XIUngrabTouchBegin.man: XIGrabButton.man
XIGetClientPointer.man: XISetClientPointer.man
XIGetFocus.man: XISetFocus.man
XIUngrabDevice.man: XIGrabDevice.man
XIGetProperty.man: XIChangeProperty.man
XIDeleteProperty.man: XIChangeProperty.man
XIUngrabEnter.man XIGrabFocusIn.man XIUngrabFocusIn.man: XIGrabEnter.man
XIGetSelectedEvents.man: XISelectEvents.man
XIFreeDeviceInfo.man: XIQueryDevice.man
XIBarrierReleasePointers.man: XIBarrierReleasePointer.man
.man.$(LIB_MAN_SUFFIX):
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
@HAVE_DOCTOOLS_TRUE@.txt.xml:
@HAVE_DOCTOOLS_TRUE@ $(AM_V_GEN)$(ASCIIDOC) -b docbook -d manpage -o $@ $<
@HAVE_DOCTOOLS_TRUE@.xml.man:
@HAVE_DOCTOOLS_TRUE@ $(AM_V_GEN)$(XMLTO) man $<
@HAVE_DOCTOOLS_TRUE@ $(AM_V_at)mv -f $(@:.man=.libmansuffix) $@
# Invoke asciidoc/xmlto main man page generation for shadow pages
@HAVE_DOCTOOLS_TRUE@$(libman_shadows):
@HAVE_DOCTOOLS_TRUE@ @if test ! -f $(@:.man=.libmansuffix); then \
@HAVE_DOCTOOLS_TRUE@ rm -f $<; \
@HAVE_DOCTOOLS_TRUE@ $(MAKE) $(AM_MAKEFLAGS) $< || exit 1; \
@HAVE_DOCTOOLS_TRUE@ fi
@HAVE_DOCTOOLS_TRUE@ $(AM_V_at)mv -f $(@:.man=.libmansuffix) $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
libXi-1.7.1.901/man/XIGrabFocusIn.man 0000664 0032045 0000764 00000000055 12116564654 013714 0000000 0000000 .so manlibmansuffix/XIGrabEnter.libmansuffix
libXi-1.7.1.901/man/XQueryDeviceState.man 0000664 0032045 0000764 00000007345 12116564646 014701 0000000 0000000 '\" t
.\" Title: xquerydevicestate
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XQUERYDEVICESTATE" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XQueryDeviceState \- query the state of an extension input device\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XDeviceState* XQueryDeviceState( Display *display,
XDevice *device);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose state is to be queried\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XQueryDeviceState request queries the state of an input
device\&. The current state of keys and buttons (up or down), and
valuators (current value) on the device is reported by this
request\&. Each key or button is represented by a bit in the
XDeviceState structure that is returned\&. Valuators on the
device report 0 if they are reporting relative information, and
the current value if they are reporting absolute information\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XQueryDeviceState can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Structures:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XDeviceState structure contains:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID device_id;
int num_classes;
XInputClass *data;
} XDeviceState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XValuatorState structure contains:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
unsigned char class;
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int *valuators;
} XValuatorState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XKeyState structure contains:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
unsigned char class;
unsigned char length;
short num_keys;
char keys[32];
} XKeyState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XButtonState structure contains:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
unsigned char class;
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonState;
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIChangeProperty.man 0000664 0032045 0000764 00000023632 12116564660 014507 0000000 0000000 '\" t
.\" Title: xichangeproperty
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XICHANGEPROPERTY" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIChangeProperty, XIGetProperty, XIDeleteProperty \- change, retrieve or delete a device\*(Aqs property\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
void XIChangeProperty( Display* dpy,
int deviceid,
Atom property,
Atom type,
int format,
int mode,
unsigned char *data,
int num_items)
.fi
.sp
.nf
void XIDeleteProperty( Display *dpy,
int deviceid,
Atom property)
.fi
.sp
.nf
Status XIGetProperty( Display *dpy,
int deviceid,
Atom property,
long offset,
long length,
Bool delete_property,
Atom type,
Atom *type_return,
int *format_return,
unsigned long *num_items_return,
unsigned long *bytes_after_return,
unsigned char **data)
.fi
.sp
.nf
bytes_after_return
Returns the number of bytes remaining to be read in the prop\-
erty if a partial read was performed\&.
.fi
.sp
.nf
data
Specifies the property data\&.
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
delete_property
Specifies a Boolean value that determines whether the property
is to be deleted\&.
.fi
.sp
.nf
deviceid
The device to list the properties for\&.
.fi
.sp
.nf
format
Specifies whether the data should be viewed as a list of
8\-bit, 16\-bit, or 32\-bit quantities\&. Possible values are 8,
16, and 32\&. This information allows the X server to correctly
perform byte\-swap operations as necessary\&. If the
format is 16\-bit or 32\-bit, you must explicitly cast your
data pointer to an (unsigned char *) in the call to
XIChangeProperty\&.
.fi
.sp
.nf
format_return
Returns the actual format of the property\&.
.fi
.sp
.nf
length
Specifies the length in 32\-bit multiples of the data to be
retrieved\&.
.fi
.sp
.nf
offset
Specifies the offset in the specified property (in 32\-bit
quantities) where the data is to be retrieved\&.
.fi
.sp
.nf
mode
One of XIPropModeAppend, XIPropModePrepend or XIPropModeReplace\&.
.fi
.sp
.nf
num_items
Number of items in data in the format specified\&.
.fi
.sp
.nf
nitems_return
Returns the actual number of 8\-bit, 16\-bit, or 32\-bit items
stored in data\&.
.fi
.sp
.nf
property
Specifies the property name\&.
.fi
.sp
.nf
type
Specifies the type of the property\&. The X server does not
interpret the type but simply passes it back to an application
that later calls XIGetProperty\&.
.fi
.sp
.nf
type_return
Returns the atom identifier that defines the actual type of
the property\&.
.fi
.SH "DESCRIPTION"
.sp
The XIGetProperty function returns the actual type of the property; the actual format of the property; the number of 8\-bit, 16\-bit, or 32\-bit items transferred; the number of bytes remaining to be read in the property; and a pointer to the data actually returned\&. XIGetProperty sets the return arguments as follows:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If the specified property does not exist for the specified device, XIGetProperty returns None to actual_type_return and the value zero to actual_format_return and bytes_after_return\&. The nitems_return argument is empty\&. In this case, the delete argument is ignored\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If the specified property exists but its type does not match the specified type, XIGetProperty returns the actual property type to actual_type_return, the actual property format (never zero) to actual_format_return, and the property length in bytes (even if the actual_format_return is 16 or 32) to bytes_after_return\&. It also ignores the delete argument\&. The nitems_return argument is empty\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If the specified property exists and either you assign XIAnyPropertyType to the req_type argument or the specified type matches the actual property type, XIGetProperty returns the actual property type to actual_type_return and the actual property format (never zero) to actual_format_return\&. It also returns a value to bytes_after_return and nitems_return, by defining the following values:
.sp
.if n \{\
.RS 4
.\}
.nf
N = length of the stored property in bytes
I = 4 * offset
T = N \- I
L = MINIMUM(T, 4 * length)
A = N \- (I + L)
.fi
.if n \{\
.RE
.\}
.RE
.sp
The returned value starts at byte index I in the property (indexing from zero), and its length in bytes is L\&. If the value for long_offset causes L to be negative, a BadValue error results\&. The value of bytes_after_return is A, giving the number of trailing unread bytes in the stored property\&.
.sp
If the returned format is 8, the returned data is represented as a char array\&. If the returned format is 16, the returned data is represented as a uint16_t array and should be cast to that type to obtain the ele\- ments\&. If the returned format is 32, the returned data is represented as a uint32_t array and should be cast to that type to obtain the elements\&.
.sp
XIGetProperty always allocates one extra byte in prop_return (even if the property is zero length) and sets it to zero so that simple properties consisting of characters do not have to be copied into yet another string before use\&.
.sp
If delete is True and bytes_after_return is zero, XIGetProperty deletes the property from the window and generates an XIPropertyNotify event on the window\&.
.sp
The function returns Success if it executes successfully\&. To free the resulting data, use XFree\&.
.sp
XIGetProperty can generate BadAtom, BadValue, and BadWindow errors\&.
.sp
The XIChangeProperty function alters the property for the specified device and causes the X server to generate a XIPropertyNotify event for that device\&. XIChangeProperty performs the following:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If mode is XIPropModeReplace, XIChangeProperty discards the previous property value and stores the new data\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If mode is XIPropModePrepend or XIPropModeAppend, XIChangeProperty inserts the specified data before the beginning of the existing data or onto the end of the existing data, respectively\&. The type and format must match the existing property value, or a BadMatch error results\&. If the property is undefined, it is treated as defined with the correct type and format with zero\-length data\&.
.RE
.sp
If the specified format is 8, the property data must be a char array\&. If the specified format is 16, the property data must be a uint16_t array\&. If the specified format is 32, the property data must be a uint32_t array\&.
.sp
The lifetime of a property is not tied to the storing client\&. Properties remain until explicitly deleted, until the device is removed, or until the server resets\&. The maximum size of a property is server dependent and can vary dynamically depending on the amount of memory the server has available\&. (If there is insufficient space, a BadAlloc error results\&.)
.sp
XIChangeProperty can generate BadAlloc, BadAtom, BadMatch, BadValue, and BadDevice errors\&.
.sp
The XIDeleteProperty function deletes the specified property only if the property was defined on the specified device and causes the X server to generate a XIPropertyNotify event for the device unless the property does not exist\&.
.sp
XIDeleteProperty can generate BadAtom and BadDevice errors\&.
.SH "DIAGNOSTICS"
.sp
BadAlloc The server failed to allocate the requested resource or server memory\&.
.sp
BadAtom A value for an Atom argument does not name a defined Atom\&.
.sp
BadValue Some numeric value falls outside the range of values accepted by the request\&. Unless a specific range is specified for an argument, the full range defined by the argument\(cqs type is accepted\&. Any argument defined as a set of alternatives can generate this error\&.
.sp
BadDevice An invalid device was specified\&. The device does not exist\&.
.sp
BadAtom An invalid property was specified\&. The property does not exist\&.
.SH "BUGS"
.sp
.if n \{\
.RS 4
.\}
.nf
The protocol headers for XI 2\&.0 did not provide
XIAnyPropertyType, XIPropModeReplace, XIPropModePrepend or
XIPropModeAppend\&. Use AnyPropertyType, PropModeReplace,
PropModePrepend and PropModeAppend instead, respectively\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
XIListProperties(libmansuffix)
libXi-1.7.1.901/man/XChangeDeviceProperty.man 0000664 0032045 0000764 00000000064 12116564643 015511 0000000 0000000 .so manlibmansuffix/XGetDeviceProperty.libmansuffix
libXi-1.7.1.901/man/XUngrabDeviceButton.man 0000664 0032045 0000764 00000000063 12116564644 015171 0000000 0000000 .so manlibmansuffix/XGrabDeviceButton.libmansuffix
libXi-1.7.1.901/man/XSetDeviceFocus.man 0000664 0032045 0000764 00000016152 12116564650 014315 0000000 0000000 '\" t
.\" Title: xsetdevicefocus
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XSETDEVICEFOCUS" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XSetDeviceFocus, XGetDeviceFocus \- control extension input device focus
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XSetDeviceFocus( Display *display,
XDevice *device,
Window focus,
int revert_to,
Time time);
.fi
.sp
.nf
XGetDeviceFocus( Display *display,
XDevice *device,
Window *focus_return,
int *revert_to_return,
int * time_return);
.fi
.sp
Arguments
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose focus is to be queried or
changed\&.
.fi
.sp
.nf
focus
Specifies the window, PointerRoot, FollowKeyboard,or
None\&.
.fi
.sp
.nf
focus_return
Returns the focus window, PointerRoot, FollowKeyboard,or
None\&.
.fi
.sp
.nf
revert_to
Specifies where the input focus reverts to if the window
becomes notviewable\&.You can pass RevertToParent,
RevertToPointerRoot, RevertToFollowKeyboard,or
RevertToNone\&.
.fi
.sp
.nf
revert_to_return
Returns the current focus state RevertToParent,
RevertToPointerRoot, RevertToFollowKeyboard,or
RevertToNone\&.
.fi
.sp
.nf
time_return
Returns the last_focus_time for the device\&.
.fi
.sp
.nf
time
Specifies the time\&.You can pass either a timestamp or
CurrentTime\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XSetDeviceFocus request changes the focus of the specified
device and its last\-focus\-change time\&. It has no effect if the
specified time is earlier than the current last\-focus\-change
time or is later than the current X server time\&. Otherwise, the
last\-focus\-change time is set to the specified time CurrentTime
is replaced by the current X server time)\&. XSetDeviceFocus
causes the X server to generate DeviceFocusIn and
DeviceFocusOut events\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Depending on the focus argument, the following occurs:
* If focus is None , all device events are discarded until a
new focus window is set, and the revert_to argument is
ignored\&.
* If focus is a window, it becomes the device\*(Aqs focus window\&.
If a generated device event would normally be reported to
this window or one of its inferiors, the event is reported
as usual\&. Otherwise, the event is reported relative to the
focus window\&.
* If focus is PointerRoot, the focus window is dynamically
taken to be the root window of whatever screen the pointer
is on at each event from the specified device\&. In this
case, the revert_to argument is ignored\&.
* If focus is FollowKeyboard, the focus window is dynamically
taken to be the window to which the X keyboard focus is set
at each input event\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The specified focus window must be viewable at the time
XSetDeviceFocus is called, or a BadMatch error results\&. If the
focus window later becomes not viewable, the X server evaluates
the revert_to argument to determine the new focus window as
follows:
* If revert_to is RevertToParent, the focus reverts to the
parent (or the closest viewable ancestor), and the new
revert_to value is taken to be RevertToNone\&.
* If revert_to is RevertToPointerRoot,
RevertToFollowKeyboard, or RevertToNone, the focus reverts
to PointerRoot, FollowKeyboard, or None, respectively\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
When the focus reverts, the X server generates DeviceFocusIn
and DeviceFocusOut events, but the last\-focus\-change time is
not affected\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Input extension devices are not required to support the ability
to be focused\&. Attempting to set the focus of a device that
does not support this request will result in a BadMatch error\&.
Whether or not given device can support this request can be
determined by the information returned by XOpenDevice\&. For
those devices that support focus, XOpenDevice will return an
XInputClassInfo structure with the input_class field equal to
the constant FocusClass (defined in the file XI\&.h)\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XSetDeviceFocus can generate BadDevice, BadMatch, BadValue, and
BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetDeviceFocus request returns the focus window and the
current focus state\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Not all input extension devices can be focused\&. Attempting to
query the focus state of a device that can\*(Aqt be focused results
in a BadMatch error\&. A device that can be focused returns
information for input Class Focus when an XOpenDevice request
is made\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetDeviceFocus can generate BadDevice, and BadMatch errors\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGetDeviceFocus or
XSetDeviceFocus request was made specifying a device
that the server implementation does not allow to be
focused\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGetDeviceControl.man 0000664 0032045 0000764 00000013432 12116564641 014640 0000000 0000000 '\" t
.\" Title: xgetdevicecontrol
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGETDEVICECONTROL" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGetDeviceControl, XChangeDeviceControl \- query and change input device controls
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XDeviceControl *XGetDeviceControl( Display *display,
XDevice *device,
int *controlType);
.fi
.sp
.nf
int XChangeDeviceControl( Display *display,
XDevice *device,
int controlType,
XDeviceControl *control);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose control is to be interrogated
or modified\&.
.fi
.sp
.nf
controlType
Specifies the type of control to be interrogated or
changed\&.
.fi
.sp
.nf
control
Specifies the address of an XDeviceControl structure
that contains the new values for the Device\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
These requests are provided to manipulate those input devices
that support device control\&. A BadMatch error will be generated
if the requested device does not support any device controls\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Valid device control types that can be used with these requests
include the following:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
DEVICE_RESOLUTION: Queries or changes the resolution of
valuators on input devices\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetDeviceControl request returns a pointer to an
XDeviceControl structure\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetDeviceControl can generate a BadDevice or BadMatch error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XChangeDeviceControl request modifies the values of one
control on the specified device\&. The control is identified by
the id field of the XDeviceControl structure that is passed
with the request\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeDeviceControl can generate a BadDevice, BadMatch, or
BadValue error\&.
.fi
.if n \{\
.RE
.\}
.SH "STRUCTURES"
.sp
.if n \{\
.RS 4
.\}
.nf
Each control is described by a structure specific to that control\&.
These structures are defined in the file XInput\&.h\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XDeviceControl is a generic structure that contains two fields
that are at the beginning of each class of control:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID class;
int length;
} XDeviceControl;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XDeviceResolutionState structure defines the information
that is returned for device resolution for devices with
valuators\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID control;
int length;
int num_valuators;
int* resolutions;
int* min_resolutions;
int* max_resolutions;
} XDeviceResolutionState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XDeviceResolutionControl structure defines the attributes
that can be controlled for keyboard Devices\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
XID control;
int length;
int first_valuator;
int num_valuators;
int* resolutions;
} XDeviceResolutionControl;
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGetDeviceControl request was
made specifying a device that has no controls or an
XChangeDeviceControl request was made with an
XDeviceControl structure that contains an invalid Device
type\&. It may also occur if an invalid combination of
mask bits is specified ( DvKey but no DvAutoRepeatMode
for keyboard Devices), or if an invalid KeySym is
specified for a string Device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the XChangeDeviceControl request\&. Unless a
specific range is specified for an argument, the full
range defined by the argument\*(Aqs type is accepted\&. Any
argument defined as a set of alternatives can generate
this error\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGrabDeviceKey.txt 0000664 0032045 0000764 00000015046 12110553734 014146 0000000 0000000 XGRABDEVICEKEY(libmansuffix)
============================
NAME
----
XGrabDeviceKey, XUngrabDeviceKey - grab/ungrab extension input
device Keys
SYNOPSIS
--------
#include
int XGrabDeviceKey( Display *display,
XDevice *device,
unsigned int key,
unsigned int modifiers,
XDevice *modifier_device,
Window grab_window,
Bool owner_events,
unsigned int event_count,
XEventClass *event_list,
int this_device_mode,
int other_devices_mode);
int XUngrabDeviceKey( Display *display,
XDevice *device,
unsigned int key,
unsigned int modifiers,
XDevice *modifier_device,
Window grab_window);
display
Specifies the connection to the X server.
device
Specifies the device that is to be grabbed or released.
Key
Specifies the device Key that is to be grabbed released
or AnyKey.
modifiers
Specifies the set of keymasks or AnyModifier.The mask is
the bitwise inclusive OR of the valid keymask bits.Valid
bits are: ShiftMask, LockMask, ControlMask, Mod1Mask,
Mod2Mask,Mod3Mask, Mod4Mask, Mod5Mask.
modifier_device
Specifies the device whose modifiers are to be used. If
a modifier_device ofNULL is specified, the X keyboard
will be used as the modifier_device.
grab_window
Specifies the grab window.
owner_events
Specifies a Boolean value that indicates whether the
deviceevents are to be reported as usual or reported
with respect to the grab windowif selected by the event
list.
event_count
Specifies the number of event classes in the event list.
event_list
Specifies which device events are reported to the
client.
this_device_mode
Specifies further processing of events from this
device.You can pass GrabModeSync or GrabModeAsync.
other_devices_mode
Specifies further processing of events from other
devices.You can pass GrabModeSyncor GrabModeAsync.
DESCRIPTION
-----------
The XGrabDeviceKey request establishes a passive grab. In the
future, the device is actively grabbed (as for XGrabDevice, the
last-device-grab time is set to the time at which the Key was
pressed (as transmitted in the DeviceKeyPress event), and the
DeviceKeyPress event is reported if all of the following
conditions are true:
* The device is not grabbed, and the specified key is
logically pressed when the specified modifier keys are
logically down, and no other keys or modifier keys are
logically down.
* The grab_window is an ancestor (or is) the focus window OR
the grab window is a descendant of the focus window and
contains the device.
* The confine_to window (if any) is viewable.
* A passive grab on the same key/modifier combination does
not exist on any ancestor of grab_window.
The interpretation of the remaining arguments is as for
XGrabDevice. The active grab is terminated automatically when
the logical state of the device has the specified key released.
Note that the logical state of a device (as seen by means of
the X protocol ) may lag the physical state if device event
processing is frozen.
If the key is not AnyKey, it must be in the range specified by
min_keycode and max_keycode as returned by the
XListInputDevices request. Otherwise, a BadValue error results.
This request overrides all previous grabs by the same client on
the same Key/modifier combinations on the same window. A
modifier of AnyModifier is equivalent to issuing the grab
request for all possible modifier combinations (including the
combination of no modifiers). It is not required that all
modifiers specified have currently assigned KeyCodes. A key of
AnyKey is equivalent to issuing the request for all possible
keys. Otherwise, it is not required that the specified key
currently be assigned to a physical Key.
If a modifier_device of NULL is specified, the X keyboard will
be used as the modifier_device.
If some other client has already issued a XGrabDeviceKey with
the same Key/modifier combination on the same window, a
BadAccess error results. When using AnyModifier or AnyKey, the
request fails completely, and a BadAccess error results (no
grabs are established) if there is a conflicting grab for any
combination.XGrabDeviceKey has no effect on an active grab.
XGrabDeviceKey can generate BadAccess, BadClass, BadDevice,
BadMatch, BadValue, and BadWindow errors. It returns Success on
successful completion of the request.
The XUngrabDeviceKey request releases the passive grab for a
key/modifier combination on the specified window if it was
grabbed by this client. A modifier of AnyModifier is equivalent
to issuing the ungrab request for all possible modifier
combinations, including the combination of no modifiers. A Key
of AnyKey is equivalent to issuing the request for all possible
Keys.XUngrabDeviceKey has no effect on an active grab.
If a modifier_device of NULL is specified, the X keyboard will
be used as the modifier_device.
XUngrabDeviceKey can generate BadDevice, BadMatch, BadValue and
BadWindow errors.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadMatch
This error may occur if an XGrabDeviceKey request was
made specifying a device that has no keys, or a modifier
device that has no keys.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadWindow
A value for a Window argument does not name a defined
Window.
SEE ALSO
--------
XAllowDeviceEvents(libmansuffix), XGrabDevice(libmansuffix), XGrabDeviceButton(libmansuffix)
libXi-1.7.1.901/man/XIGetFocus.man 0000664 0032045 0000764 00000000054 12116564660 013265 0000000 0000000 .so manlibmansuffix/XISetFocus.libmansuffix
libXi-1.7.1.901/man/XIUngrabEnter.man 0000664 0032045 0000764 00000000055 12116564654 013766 0000000 0000000 .so manlibmansuffix/XIGrabEnter.libmansuffix
libXi-1.7.1.901/man/XSetDeviceValuators.txt 0000664 0032045 0000764 00000004246 12110553734 015256 0000000 0000000 XSETDEVICEVALUATORS(libmansuffix)
=================================
NAME
----
XSetDeviceValuators - initialize the valuators on an extension input device
SYNOPSIS
--------
#include
XSetDeviceValuators( Display *display,
XDevice *device,
int *valuators,
int first_valuator,
int num_valuators);
display
Specifies the connection to the X server.
device
Specifies the device whose valuators are to be
initialized.
valuators
Specifies a pointer to an array of integer values to be
used to initialize thedevice valuators.
first_valuator
Specifies the first valuator to be set. Valuators are
numbered beginning withzero.
num_valuators
Specifies the number of valuators to be set.
DESCRIPTION
-----------
The XSetDeviceValuators request sets the current values of the
valuators of an input device. The valuators in the range
first_valuator to (first_valuator + num_valuators) are set to
the specified values. Valuators are numbered beginning with 0.
Not all input devices support initialization of valuator
values. If this request is made to a device that does not
support valuators initialization, a BadMatch error will occur.
If the request succeeds, a status of Success is returned. If
another client has the device grabbed, a status of
AlreadyGrabbed is returned.
XSetDeviceValuators can generate a BadLength, BadDevice,
BadMatch, or BadValue error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice.
BadMatch
This error may occur if an XSetDeviceValuators request
is made specifying a device that has no valuators and
reports no axes of motion, or if such a request is made
specifying a device that does not support valuator
initialization.
BadValue
An invalid first_valuator or num_valuators values was
specified.
libXi-1.7.1.901/man/XSetDeviceModifierMapping.man 0000664 0032045 0000764 00000000073 12116564641 016303 0000000 0000000 .so manlibmansuffix/XGetDeviceModifierMapping.libmansuffix
libXi-1.7.1.901/man/XChangeKeyboardDevice.txt 0000664 0032045 0000764 00000004164 12110553734 015467 0000000 0000000 XCHANGEKEYBOARDDEVICE(libmansuffix)
===================================
NAME
----
XChangeKeyboardDevice - change which device is used as the X
keyboard
SYNOPSIS
--------
#include
Status XChangeKeyboardDevice( Display *display,
XDevice *device);
display
Specifies the connection to the X server.
device
Specifies the device to be used as the X keyboard.
DESCRIPTION
-----------
The XChangeKeyboardDevice request causes the server to use the
specified device as the X keyboard. The device must have been
previously opened by the requesting client via XOpenDevice or a
BadDevice error will result. The device must support input
class Keys, or a BadMatch error will result. If the server
implementation does not support using the requested device as
the X keyboard, a BadDevice error will result.
If the specified device is grabbed by another client,
AlreadyGrabbed is returned. If the specified device is frozen
by a grab on another device, GrabFrozen is returned. If the
request is successful, Success is returned.
If the request succeeds, a ChangeDeviceNotify event is sent to
all clients that have selected that event. A MappingNotify
event with request = MappingKeyboard is sent to all clients.
The specified device becomes the X keyboard and the old X
keyboard becomes accessible through the input extension
protocol requests.
XChangeKeyboardDevice can generate a BadDevice or a BadMatch
error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist, has not been opened by this client via
XOpenInputDevice, or is already one of the core X device
(pointer or keyboard). This error may also occur if the
server implementation does not support using the
specified device as the X keyboard.
BadMatch
This error may occur if an XChangeKeyboardDevice request
was made specifying a device that has no keys.
SEE ALSO
--------
XChangePointerDevice(libmansuffix)
libXi-1.7.1.901/man/XIBarrierReleasePointer.txt 0000664 0032045 0000764 00000004166 12150513475 016046 0000000 0000000 XIBARRIERRELEASEPOINTER(libmansuffix)
=====================================
NAME
----
XIBarrierReleasePointer, XIBarrierReleasePointers - allow pointer movement across a pointer barrier
SYNOPSIS
--------
#include
int XIBarrierReleasePointer( Display *display,
int deviceid,
PointerBarrier barrier,
BarrierEventID eventid);
int XIBarrierReleasePointers( Display *display,
XIBarrierReleasePointerInfo *barriers,
int num_barriers);
display
Specifies the connection to the X server.
deviceid
Specifies the device allowed to move across the barrier.
barrier
Specifies the barrier.
eventid
Specifies the unique event ID for this barrier event sequence.
barriers
List of deviceid, barrier, eventid triplets.
num_barriers
Number of elements in barriers.
DESCRIPTION
-----------
If a pointer is constrained by a pointer barrier, release the pointer
from the barrier and allow it to cross the barrier with the next motion.
If the pointer moves away from the barrier, this request does nothing.
This request only releases the pointer for the given barrier event
sequence. If the pointer moves away from or through the barrier, a
XI_BarrierLeave event is generated. Future pointer movement constrained
by this barrier will assign a new eventid and require a new
XIBarrierReleasePointer request.
If the pointer is not currently blocked by the barrier or the barrier
event sequence has ended, this request does nothing.
XIBarrierReleasePointer and XIBarrierReleasePointers can generate a
BadDevice or BadValue error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The device does not
exist or is not a master pointer device.
BadValue
A value for a PointerBarrier argument does not name a defined
pointer barrier.
See also
--------
XFixesCreatePointerBarrier(libmansuffix)
libXi-1.7.1.901/man/XIListProperties.txt 0000664 0032045 0000764 00000002206 12110553734 014575 0000000 0000000 XILISTPROPERTIES(libmansuffix)
=============================
NAME
----
XIListProperties - List a device's properties.
SYNOPSIS
--------
#include
Atom* XListProperties( Display *display,
int deviceid,
int *nprops_return);
display
Specifies the connection to the X server.
deviceid
The device to list the properties for.
nprops_return
Specifies the number of Atoms returned.
DESCRIPTION
-----------
The XIListProperties function returns a list of the
properties associated with the input device specified with
deviceid. Each device may have an arbitrary number of properties
attached, some of which were created by the driver and/or
server, others created by clients at runtime.
The client is expected to free the list of properties using
XFree.
XIListProperties can generate a BadDevice error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The device does not
exist.
SEE ALSO
--------
XIChangeProperty(libmansuffix),
XIGetProperty(libmansuffix),
XIDeleteProperty(libmansuffix)
libXi-1.7.1.901/man/XGetDeviceProperty.txt 0000664 0032045 0000764 00000012020 12110553734 015073 0000000 0000000 XGETDEVICEPROPERTY(libmansuffix)
================================
NAME
----
XGetDeviceProperty, XChangeDeviceProperty,
XDeleteDeviceProperty - Get, change or delete a device's
property.
SYNOPSIS
--------
#include
int XGetDeviceProperty( Display *display,
XDevice *device,
Atom property,
long offset,
long length,
Bool delete,
Atom req_type,
Atom *actual_type_return,
int *actual_format_return,
unsigned long *nitems_return,
unsigned long *bytes_after_return,
unsigned char **prop_return)
void XChangeDeviceProperty( Display *display,
XDevice *device,
Atom property,
Atom type,
int format,
int mode,
const char *data,
int nelements)
void XDeleteDeviceProperty( Display *display,
XDevice *device,
Atom property)
actual_type_return
Returns an atom identifier that defines the actual type
of the property.
actual_format_return
Returns the actual format of the property.
bytes_after_return
Returns the number of bytes remaining to be read in the
property if a partial read was performed.
data
Specifies the property data.
delete
Specifies a Boolean value that determines whether the
property is deleted.
display
Specifies the connection to the X server.
device
The device to grab.
format
Specifies whether the data should be viewed as a list of
8-bit, 16-bit, or 32-bit quantities. Possible values are
8, 16, and 32. This information allows the X server to
correctly perform byte-swap operations as necessary. If
the format is 16-bit or 32-bit, you must explicitly cast
the data pointer to an (unsigned char*) in the call to
XChangeDeviceProperty.
length
Specifies the length in 32-bit multiplies of the data to
be retrieved.
mode
Specifies the mode of operation. You can pass
PropModeReplace, PropModePrepend, or PropModeAppend.
nelements
Specifies the number of elements in data.
nitems_return
Returns the actual number of 8-bit, 16-bit, or 32-bit
items stored in the prop_return array.
num_values
Specifies the number of elements in the values list.
offset
Specifies the offset in the specified property (in
32-bit quantities) where the data is to be retrieved.
property
Specifies the property to modify or query.
prop_return
Returns the data in the specified format. If the
returned format is 8, the returned data is represented
as a char array. If the returned format is 16, the
returned data is represented as an array of short int
type and should be cast to that type to obtain the
elements. If the returned format is 32, the property
data will be stored as an array of longs (which in a
64-bit application will be 64-bit values that are padded
in the upper 4 bytes).
req_type
Specifies the atom identifier associated with the
property type or AnyPropertyType.
DESCRIPTION
-----------
The XGetDeviceProperty function returns the actual type of the
property; the actual format of the property; the number of
8-bit, 16-bit, or 32-bit items transferred; the number of bytes
remaining to be read in the property; and a pointer to the data
actually returned. For a detailed description of this function,
see the man page to XGetWindowProperty.
The XChangeDeviceProperty function alters the property for the
specified device and causes the server to generate a
XPropertyNotifyEvent event on that device. For a detailed
description of this function, see the man page to
XChangeProperty.
The XDeleteDeviceProperty function deletes the specified device
property. Note that a client cannot delete a property created
by a driver or the server. Attempting to do so will result in a
BadAtom error.
XGetDeviceProperty can generate a BadAtom, BadDevice error.
XChangeDeviceProperty can generate a BadDevice, a BadMatch, a
BadAtom, and a BadValue error.
XDeleteDeviceProperty can generate a BadDevice, and a BadAtom
error.
DIAGNOSIS
---------
BadAtom
A value does not describe a valid named identifier or
the client attempted to remove a driver-allocated
property.
BadDevice
An invalid device was specified. The device does not
exist.
SEE ALSO
--------
XListDeviceProperties(libmansuffix)
libXi-1.7.1.901/man/XAllowDeviceEvents.txt 0000664 0032045 0000764 00000012250 12110553734 015057 0000000 0000000 XALLOWDEVICEEVENTS(libmansuffix)
================================
NAME
----
XAllowDeviceEvents - release queued events
SYNOPSIS
------
#include
int XAllowDeviceEvents( Display *display,
XDevice *device,
int event_mode,
Time time);
display
Specifies the connection to the X server.
device
Specifies the device from which events are to be
allowed.
event_mode
Specifies the event mode.You can pass AsyncThisDevice,
SyncThisDevice, ReplayThisDevice, AsyncOtherDevices,
SyncAll,or AsyncAll.
time
Specifies the time.You can pass either a timestamp or
CurrentTime.
DESCRIPTION
-----------
The XAllowDeviceEvents function releases some queued events if
the client has caused a device to freeze. It has no effect if
the specified time is earlier than the last-grab time of the
most recent active grab for the client and device, or if the
specified time is later than the current X server time.
The following describes the processing that occurs depending on
what constant you pass to the event_mode argument.
* AsyncThisDevice - If the specified device is frozen by the
client, event processing for that device continues as usual. If
the device is frozen multiple times by the client on behalf of
multiple separate grabs, AsyncThisDevice thaws for
all.AsyncThisDevice has no effect if the specified device is
not frozen by the client, but the device need not be grabbed by
the client.
* SyncThisDevice - If the specified device is frozen and actively
grabbed by the client, event processing for that device
continues normally until the next key or button event is
reported to the client. At this time, the specified device
again appears to freeze. However, if the reported event causes
the grab to be released, the specified device does not freeze.
SyncThisDevice has no effect if the specified device is not
frozen by the client or is not grabbed by the client.
* ReplayThisDevice - If the specified device is actively grabbed by
the client and is frozen as the result of an event having been
sent to the client (either from the activation of a
GrabDeviceButton or from a previous AllowDeviceEvents with mode
SyncThisDevice, but not from a GrabDevice), the grab is
released and that event is completely reprocessed. This time,
however, the request ignores any passive grabs at or above
(toward the root) that the grab-window of the grab just
released. The request has no effect if the specified device is
not grabbed by the client or if it is not frozen as the result
of an event.
* AsyncOtherDevices - If the remaining devices are frozen by the
client, event processing for them continues as usual. If the
other devices are frozen multiple times by the client on behalf
of multiple grabs, AsyncOtherDevices "thaws" for all.
AsyncOtherDevices has no effect if the devices are not frozen
by the client.
* SyncAll - If all devices are frozen by the client, event
processing (for all devices) continues normally until the next
button or key event is reported to the client for a grabbed
device, at which time all devices again appear to freeze.
However, if the reported event causes the grab to be released,
then the devices do not freeze. If any device is still grabbed,
then a subsequent event for it will still cause all devices to
freeze. SyncAll has no effect unless all devices are frozen by
the client. If any device is frozen twice by the client on
behalf of two separate grabs, SyncAll thaws for both. A
subsequent freeze for SyncAll will only freeze each device
once.
* AsyncAll - If all devices are frozen by the client, event
processing for all devices continues normally. If any device is
frozen multiple times by the client on behalf of multiple
separate grabs, AsyncAll thaws for all. AsyncAll has no effect
unless all devices are frozen by the client.
AsyncThisDevice, SyncThisDevice, and ReplayThisDevice have no
effect on the processing of events from the remaining
devices.AsyncOtherDevices has no effect on the processing of
events from the specified device. When the event_mode is
SyncAll or AsyncAll, the device parameter is ignored.
It is possible for several grabs of different devices by the
same or different clients to be active simultaneously. If a
device is frozen on behalf of any grab, no event processing is
performed for the device. It is possible for a single device to
be frozen because of several grabs. In this case, the freeze
must be released on behalf of each grab before events can again
be processed.
XAllowDeviceEvents can generate a BadDevice or BadValue error.
DIAGNOSTICS
-------------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadValue
An invalid mode was specified on the request.
SEE ALSO
--------
XGrabDevice(libmansuffix)
libXi-1.7.1.901/man/XISetFocus.man 0000664 0032045 0000764 00000010035 12116564660 013301 0000000 0000000 '\" t
.\" Title: xisetfocus
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XISETFOCUS" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XISetFocus, XIGetFocus \- set or get the device\*(Aqs focus\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XISetFocus( Display *display,
int deviceid,
Window focus,
Time time);
.fi
.sp
.nf
Status XIGetFocus( Display *display,
Window *focus_return);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
deviceid
Specifies the device whose focus is to be queried or
changed\&.
.fi
.sp
.nf
focus
The new focus window\&.
.fi
.sp
.nf
focus_return
Returns the current focus window\&.
.fi
.sp
.nf
time
A valid timestamp or CurrentTime\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
XISetFocus changes the focus of the specified device ans its
last\-focus\-change time\&. It has no effect if the specified time
is earlier than the current last\-focus\-change time or is later
than the current X server time\&. Otherwise, the
last\-focus\-change time is set to the specified time\&.
CurrentTime is replaced by the current X server time)\&.
XISetFocus causes the X server to generate core, XI and XI2
focus events\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the focus window is None all keyboard events by this device
are discarded until a new focus window is set\&. Otherwise, if
focus is a window, it becomes the device\*(Aqs focus window\&. If a
generated device event would normally be reported to this
window or one of its inferiors, the event is reported as usual\&.
Otherwise, the event is reported relative to the focus window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The specified focus window must be viewable at the time
XISetFocus is called, or a BadMatch error results\&. If the focus
window later becomes not viewable, the focus reverts to the
parent (or the closest viewable ancestor\&. When the focus
reverts, the X server generates core, XI and XI2 focus events
but the last\-focus\-change time is not affected\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Attempting to set the focus on a master pointer device or an
attached slave device will result in a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XISetFocus can generate BadDevice, BadMatch, BadValue, and
BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
A value is outside of the permitted range\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a appropriate for the type of change\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
The window is not viewable\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XISetClientPointer.txt 0000664 0032045 0000764 00000003643 12110553734 015046 0000000 0000000 XISETCLIENTPOINTER(libmansuffix)
================================
NAME
----
XISetClientPointer, XIGetClientPointer - set or get the
ClientPointer device.
SYNOPSIS
--------
#include
XISetClientPointer( Display *display,
Window win,
int deviceid);
Bool XIGetClientPointer( Display *display,
Window win,
int *device);
display
Specifies the connection to the X server.
win
Specifies a window belonging to the client. May be None.
deviceid
Specifies the ClientPointer device.
DESCRIPTION
-----------
The ClientPointer is the device that is percieved to be the
core pointer for non-XI protocol requests and replies. Each
time a protocol message needs device-dependent data and the
device is not explicitly given, the ClientPointer device is
used to obtain the data. For example, a XQueryPointer request
will return the coordinates of the ClientPointer.
XISetClientPointer request sets the ClientPointer device for
the client that owns the given window. If win is None, the
requesting client's ClientPointer is set to the device
specified with deviceid. Only master pointer devices can be set
as ClientPointer.
XISetClientPointer and can generate a BadDevice and a BadWindow
error.
The XIGetClientPointer request returns the ClientPointer's
device ID for the client that owns the given window. If win is
None, the requesting client's ClientPointer is returned.
win may be a client ID instead of a window.
XIGetClientPointer can generate a BadWindow error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The device does not
exist or is not a master pointer device.
BadWindow
A value for a Window argument does not name a defined
window.
libXi-1.7.1.901/man/XGetDeviceProperty.man 0000664 0032045 0000764 00000014550 12116564643 015050 0000000 0000000 '\" t
.\" Title: xgetdeviceproperty
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGETDEVICEPROPERTY" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGetDeviceProperty, XChangeDeviceProperty, XDeleteDeviceProperty \- Get, change or delete a device\*(Aqs property\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XGetDeviceProperty( Display *display,
XDevice *device,
Atom property,
long offset,
long length,
Bool delete,
Atom req_type,
Atom *actual_type_return,
int *actual_format_return,
unsigned long *nitems_return,
unsigned long *bytes_after_return,
unsigned char **prop_return)
.fi
.sp
.nf
void XChangeDeviceProperty( Display *display,
XDevice *device,
Atom property,
Atom type,
int format,
int mode,
const char *data,
int nelements)
.fi
.sp
.nf
void XDeleteDeviceProperty( Display *display,
XDevice *device,
Atom property)
.fi
.sp
.nf
actual_type_return
Returns an atom identifier that defines the actual type
of the property\&.
.fi
.sp
.nf
actual_format_return
Returns the actual format of the property\&.
.fi
.sp
.nf
bytes_after_return
Returns the number of bytes remaining to be read in the
property if a partial read was performed\&.
.fi
.sp
.nf
data
Specifies the property data\&.
.fi
.sp
.nf
delete
Specifies a Boolean value that determines whether the
property is deleted\&.
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
The device to grab\&.
.fi
.sp
.nf
format
Specifies whether the data should be viewed as a list of
8\-bit, 16\-bit, or 32\-bit quantities\&. Possible values are
8, 16, and 32\&. This information allows the X server to
correctly perform byte\-swap operations as necessary\&. If
the format is 16\-bit or 32\-bit, you must explicitly cast
the data pointer to an (unsigned char*) in the call to
XChangeDeviceProperty\&.
.fi
.sp
.nf
length
Specifies the length in 32\-bit multiplies of the data to
be retrieved\&.
.fi
.sp
.nf
mode
Specifies the mode of operation\&. You can pass
PropModeReplace, PropModePrepend, or PropModeAppend\&.
.fi
.sp
.nf
nelements
Specifies the number of elements in data\&.
.fi
.sp
.nf
nitems_return
Returns the actual number of 8\-bit, 16\-bit, or 32\-bit
items stored in the prop_return array\&.
.fi
.sp
.nf
num_values
Specifies the number of elements in the values list\&.
.fi
.sp
.nf
offset
Specifies the offset in the specified property (in
32\-bit quantities) where the data is to be retrieved\&.
.fi
.sp
.nf
property
Specifies the property to modify or query\&.
.fi
.sp
.nf
prop_return
Returns the data in the specified format\&. If the
returned format is 8, the returned data is represented
as a char array\&. If the returned format is 16, the
returned data is represented as an array of short int
type and should be cast to that type to obtain the
elements\&. If the returned format is 32, the property
data will be stored as an array of longs (which in a
64\-bit application will be 64\-bit values that are padded
in the upper 4 bytes)\&.
.fi
.sp
.nf
req_type
Specifies the atom identifier associated with the
property type or AnyPropertyType\&.
.fi
.SH "DESCRIPTION"
.sp
The XGetDeviceProperty function returns the actual type of the property; the actual format of the property; the number of 8\-bit, 16\-bit, or 32\-bit items transferred; the number of bytes remaining to be read in the property; and a pointer to the data actually returned\&. For a detailed description of this function, see the man page to XGetWindowProperty\&.
.sp
The XChangeDeviceProperty function alters the property for the specified device and causes the server to generate a XPropertyNotifyEvent event on that device\&. For a detailed description of this function, see the man page to XChangeProperty\&.
.sp
The XDeleteDeviceProperty function deletes the specified device property\&. Note that a client cannot delete a property created by a driver or the server\&. Attempting to do so will result in a BadAtom error\&.
.sp
XGetDeviceProperty can generate a BadAtom, BadDevice error\&.
.sp
XChangeDeviceProperty can generate a BadDevice, a BadMatch, a BadAtom, and a BadValue error\&.
.sp
XDeleteDeviceProperty can generate a BadDevice, and a BadAtom error\&.
.SH "DIAGNOSIS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadAtom
A value does not describe a valid named identifier or
the client attempted to remove a driver\-allocated
property\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XListDeviceProperties(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIGetSelectedEvents.man 0000664 0032045 0000764 00000000060 12116564656 015125 0000000 0000000 .so manlibmansuffix/XISelectEvents.libmansuffix
libXi-1.7.1.901/man/XSetDeviceMode.txt 0000664 0032045 0000764 00000003174 12110553734 014161 0000000 0000000 XSETDEVICEMODE(libmansuffix)
============================
NAME
----
XSetDeviceMode - change the mode of a device
SYNOPSIS
--------
#include
XSetDeviceMode( Display *display,
XDevice *device,
int mode);
display
Specifies the connection to the X server.
device
Specifies the device whose mode is to be changed.
mode
Specifies the mode.You can pass Absolute,or Relative.
DESCRIPTION
-----------
The XSetDeviceMode request changes the mode of an input device
that is capable of reporting either absolute positional
information or relative motion information. Not all input
devices are capable of reporting motion data, and not all are
capable of changing modes from Absolute to Relative.
XSetDeviceMode can generate a BadDevice or BadMode error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests.
BadMatch
This error may occur if an XSetDeviceMode request is
made specifying a device that has no valuators and
reports no axes of motion.
BadMode
An invalid mode was specified. This error will also be
returned if the specified device is not capable of
supporting the XSetDeviceMode request.
libXi-1.7.1.901/man/XSetDeviceButtonMapping.txt 0000664 0032045 0000764 00000006365 12110553734 016071 0000000 0000000 XSETDEVICEBUTTONMAPPING(libmansuffix)
=====================================
NAME
----
XSetDeviceButtonMapping, XGetDeviceButtonMapping - query or
change device button mappings
SYNOPSIS
--------
#include
int XSetDeviceButtonMapping( Display *display,
XDevice *device,
unsigned char map[],
int nmap);
int XGetDeviceButtonMapping( Display *display,
XDevice *device,
unsigned char map_return[],
int nmap);
display
Specifies the connection to the X server.
device
Specifies the device whose button mapping is to be
queried or changed.
map
Specifies the mapping list.
map_return
Returns the mapping list.
nmap
Specifies the number of items in the mapping list.
DESCRIPTION
-----------
The XSetDeviceButtonMapping request sets the mapping of the
specified device. If it succeeds, the X server generates a
DeviceMappingNotify event, and XSetDeviceButtonMapping returns
MappingSuccess. Element map[i] defines the logical button
number for the physical button i+1. The length of the list must
be the same as XGetDeviceButtonMapping would return, or a
BadValue error results. A zero element disables a button, and
elements are not restricted in value by the number of physical
buttons. However, no two elements can have the same nonzero
value, or a BadValue error results. If any of the buttons to be
altered are logically in the down state,
XSetDeviceButtonMapping returns MappingBusy, and the mapping is
not changed.
XSetDeviceButtonMapping can generate BadDevice, BadMatch, and
BadValue errors.
The XGetDeviceButtonMapping request returns the current mapping
of the specified device. Buttons are numbered starting from
one.XGetDeviceButtonMapping returns the number of physical
buttons actually on the device. The nominal mapping for a
device is map[i]=i+1. The nmap argument specifies the length of
the array where the device mapping is returned, and only the
first nmap elements are returned in map_return.
XGetDeviceButtonMapping can generate BadDevice or BadMatch
errors.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadMatch
This error may occur if an XGetDeviceButtonMapping or
XSetDeviceButtonMapping request was made specifying a
device that has no buttons.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
SEE ALSO
--------
XChangeDeviceKeyboardControl(libmansuffix), XChangeDeviceKeyMapping(libmansuffix),
XChangeDeviceModifierMapping(libmansuffix)
libXi-1.7.1.901/man/XIGrabDevice.txt 0000664 0032045 0000764 00000012362 12110553734 013604 0000000 0000000 XIGRABDEVICE(libmansuffix)
==========================
NAME
----
XIGrabDevice, XIUngrabDevice - grab or ungrab the device.
SYNOPSIS
--------
#include
Status XIGrabDevice( Display *display,
int deviceid,
Window grab_window,
Time time,
Cursor cursor,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask);
Status XIUngrabDevice( Display *display,
int deviceid,
Time time);
cursor
Specifies the cursor image to display for the duration
of the grab.
display
Specifies the connection to the X server.
deviceid
Specifies the device that should be grabbed or
ungrabbed.
grab_mode, paired_device_mode
The grab mode for this device and (if applicable) the
paired device.
grab_window
The grab window.
mask
Event mask.
owner_events
True if events are to be reported normally.
time
A valid timestamp or CurrentTime.
DESCRIPTION
-----------
XIGrabDevice actively grabs control of the device. Further
device events are reported only to the grabbing client.
XIGrabDevice overrides any active device grab by this client.
If the device is an attached slave device, the device is
automatically detached from the master device and reattached to
the same master device when client ungrabs the device. If the
master device is removed while the device is floating as a
result of a grab, the device remains floating once the grab
deactivates.
If owner_events is False, all generated device events are
reported with respect to grab_window if selected. If
owner_events is True and if a generated device event would
normally be reported to this client, it is reported normally;
otherwise, the event is reported with respect to the
grab_window, and is only reported if specified in the event
mask.
If the grab_mode argument is XIGrabModeAsync, device event
processing continues as usual. If the device is currently
frozen by this client, then processing of device events is
resumed. If the grab_mode argument is XIGrabModeSync, the state
of the device (as seen by client applications) appears to
freeze, and the X server generates no further device events
until the grabbing client issues a releasing XIAllowEvents call
or until the device grab is released. Actual device changes are
not lost while the device is frozen; they are simply queued in
the server for later processing.
If paired_device_mode is XIGrabModeAsync, processing of events
from the paired master device is unaffected by activation of
the grab. If paired_device_mode is XIGrabModeSync, the state of
the paired master device (as seen by client applications)
appears to freeze, and the X server generates no further events
from this device until the grabbing client issues a releasing
XIAllowEvents call or until the device grab is released. Actual
events are not lost while the devices are frozen; they are
simply queued in the server for later processing. If the device
is a slave device paired_device_mode is ignored.
If the device is actively grabbed by some other client,
XIGrabDevice fails and returns AlreadyGrabbed. If grab_window
is not viewable, it fails and returns GrabNotViewable. If the
device is frozen by an active grab of another client, it fails
and returns GrabFrozen. If the specified time is earlier than
the last-device-grab time or later than the current X server
time, it fails and returns GrabInvalidTime. Otherwise, the
last-device-grab time is set to the specified time. CurrentTime
is replaced by the current X server time.
If cursor is not None this cursor is displayed until the client
calls XIUngrabDevice.
XIGrabDevice can generate BadDevice, BadValue, and BadWindow
errors.
The XIUngrabDevice request releases the device and any queued
events if this client has it actively grabbed from either
XIGrabDevice or XIGrabKey or XIGrabButton. If other devices are
frozen by the grab, XUngrabDevice thaws them. XUngrabDevice
does not release the device and any queued events if the
specified time is earlier than the last-device-grab time or is
later than the current X server time. The X server
automatically performs an XIUngrabDevice request if the event
window for an active device grab becomes not viewable.
XIUngrabDevice can generate a BadDevice error.
DIAGNOSTICS
-----------
BadValue
A value is outside of the permitted range.
BadDevice
An invalid device was specified. The device does not
exist or is not a appropriate for the type of change.
BadMatch
The window is not viewable.
BadWindow
A value for a Window argument does not name a defined
Window.
BUGS
----
The protocol headers for XI 2.0 did not provide
XIGrabModeAsync or XIGrabModeSync. Use GrabModeSync and
GrabModeAsync instead, respectively.
SEE ALSO
--------
XIAllowEvents(libmansuffix)
libXi-1.7.1.901/man/XISetFocus.txt 0000664 0032045 0000764 00000004752 12110553734 013350 0000000 0000000 XISETFOCUS(libmansuffix)
========================
NAME
----
XISetFocus, XIGetFocus - set or get the device's focus.
SYNOPSIS
--------
#include
Status XISetFocus( Display *display,
int deviceid,
Window focus,
Time time);
Status XIGetFocus( Display *display,
Window *focus_return);
display
Specifies the connection to the X server.
deviceid
Specifies the device whose focus is to be queried or
changed.
focus
The new focus window.
focus_return
Returns the current focus window.
time
A valid timestamp or CurrentTime.
DESCRIPTION
-----------
XISetFocus changes the focus of the specified device ans its
last-focus-change time. It has no effect if the specified time
is earlier than the current last-focus-change time or is later
than the current X server time. Otherwise, the
last-focus-change time is set to the specified time.
CurrentTime is replaced by the current X server time).
XISetFocus causes the X server to generate core, XI and XI2
focus events.
If the focus window is None all keyboard events by this device
are discarded until a new focus window is set. Otherwise, if
focus is a window, it becomes the device's focus window. If a
generated device event would normally be reported to this
window or one of its inferiors, the event is reported as usual.
Otherwise, the event is reported relative to the focus window.
The specified focus window must be viewable at the time
XISetFocus is called, or a BadMatch error results. If the focus
window later becomes not viewable, the focus reverts to the
parent (or the closest viewable ancestor. When the focus
reverts, the X server generates core, XI and XI2 focus events
but the last-focus-change time is not affected.
Attempting to set the focus on a master pointer device or an
attached slave device will result in a BadDevice error.
XISetFocus can generate BadDevice, BadMatch, BadValue, and
BadWindow errors.
DIAGNOSTICS
-----------
BadValue
A value is outside of the permitted range.
BadDevice
An invalid device was specified. The device does not
exist or is not a appropriate for the type of change.
BadMatch
The window is not viewable.
BadWindow
A value for a Window argument does not name a defined
Window.
libXi-1.7.1.901/man/XChangeDeviceControl.man 0000664 0032045 0000764 00000000063 12116564641 015302 0000000 0000000 .so manlibmansuffix/XGetDeviceControl.libmansuffix
libXi-1.7.1.901/man/XQueryDeviceState.txt 0000664 0032045 0000764 00000004661 12110553734 014731 0000000 0000000 XQUERYDEVICESTATE(libmansuffix)
===============================
NAME
----
XQueryDeviceState - query the state of an extension input
device.
SYNOPSIS
--------
#include
XDeviceState* XQueryDeviceState( Display *display,
XDevice *device);
display
Specifies the connection to the X server.
device
Specifies the device whose state is to be queried.
DESCRIPTION
-----------
The XQueryDeviceState request queries the state of an input
device. The current state of keys and buttons (up or down), and
valuators (current value) on the device is reported by this
request. Each key or button is represented by a bit in the
XDeviceState structure that is returned. Valuators on the
device report 0 if they are reporting relative information, and
the current value if they are reporting absolute information.
XQueryDeviceState can generate a BadDevice error.
Structures:
The XDeviceState structure contains:
typedef struct {
XID device_id;
int num_classes;
XInputClass *data;
} XDeviceState;
The XValuatorState structure contains:
typedef struct {
unsigned char class;
unsigned char length;
unsigned char num_valuators;
unsigned char mode;
int *valuators;
} XValuatorState;
The XKeyState structure contains:
typedef struct {
unsigned char class;
unsigned char length;
short num_keys;
char keys[32];
} XKeyState;
The XButtonState structure contains:
typedef struct {
unsigned char class;
unsigned char length;
short num_buttons;
char buttons[32];
} XButtonState;
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests.
libXi-1.7.1.901/man/XIBarrierReleasePointers.man 0000664 0032045 0000764 00000000071 12151551631 016151 0000000 0000000 .so manlibmansuffix/XIBarrierReleasePointer.libmansuffix
libXi-1.7.1.901/man/XIWarpPointer.txt 0000664 0032045 0000764 00000005170 12110553734 014062 0000000 0000000 XIWARPPOINTER(libmansuffix)
===========================
NAME
----
XIWarpPointer - move a device's pointer.
SYNOPSIS
--------
#include
Bool XIWarpPointer( Display *display,
int deviceid,
Window src_w,
Window dest_w,
double src_x,
double src_y,
int src_width,
int src_height,
double dest_x,
double dest_y);
dest_w
Specifies the destination window or None.
dest_x, dest_y
Specify the x and y coordinates within the destination
window.
deviceid
Specifies the master pointer device or floating slave
device to move.
display
Specifies the connection to the X server.
src_x, src_y, src_width, src_height
Specify a rectangle in the source window.
src_w
Specifies the source window or None.
DESCRIPTION
-----------
If dest_w is None, XIWarpPointer moves the pointer by the
offsets (dest_x, dest_y) relative to the current position of
the pointer. If dest_w is a window, XIWarpPointer moves the
pointer to the offsets (dest_x, dest_y) relative to the origin
of dest_w. However, if src_w is a window, the move only takes
place if the window src_w contains the pointer and if the
specified rectangle of src_w contains the pointer.
The src_x and src_y coordinates are relative to the origin of
src_w. If src_height is zero, it is replaced with the current
height of src_w minus src_y. If src_width is zero, it is
replaced with the current width of src_w minus src_x.
There is seldom any reason for calling this function. The
pointer should normally be left to the user. If you do use this
function, however, it generates events just as if the user had
instantaneously moved the pointer from one position to another.
Note that you cannot use XIWarpPointer to move the pointer
outside the confine_to window of an active pointer grab. An
attempt to do so will only move the pointer as far as the
closest edge of the confine_to window.
XIWarpPointer is identical to XWarpPointer but specifies the
device explicitly.
XIWarpPointer can generate a BadDevice and a BadWindow error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The device does not
exist or is not a pointer device.
BadWindow
A value for a Window argument does not name a defined
window.
SEE ALSO
--------
XWarpPointer(libmansuffix)
libXi-1.7.1.901/man/XIUngrabKeycode.man 0000664 0032045 0000764 00000000056 12116564654 014275 0000000 0000000 .so manlibmansuffix/XIGrabButton.libmansuffix
libXi-1.7.1.901/man/XIGrabTouchBegin.man 0000664 0032045 0000764 00000000056 12116564654 014376 0000000 0000000 .so manlibmansuffix/XIGrabButton.libmansuffix
libXi-1.7.1.901/man/XSendExtensionEvent.txt 0000664 0032045 0000764 00000010467 12110553734 015274 0000000 0000000 XSENDEXTENSIONEVENT(libmansuffix)
=================================
NAME
----
XSendExtensionEvent - send input extension events to a client
SYNOPSIS
--------
#include
Status XSendExtensionEvent( Display *display,
XDevice *device,
Window destination,
Bool propagate,
int event_count,
XEventClass *event_list,
XEvent *event_send);
display
Specifies the connection to the X server.
device
Specifies the device from which the events are to be
sent.
destination
Specifies the window the event is to be sent to. You can
pass window id, PointerWindow,or InputFocus.
propagate
Specifies a Boolean value that is either True or False.
event_count
Specifies the count of XEventClasses in event_list.
event_list
Specifies the list of event selections to be used.
event_send
Specifies a pointer to the event that is to be sent.
DESCRIPTION
-----------
The XSendExtensionEvent request identifies the destination
window, determines which clients should receive the specified
events, and ignores any active grabs. This request requires you
to pass an event class list. For a discussion of the valid
event class names, see XOpenDevice(libmansuffix) This
request uses the w argument to identify the destination window
as follows:
* If w is PointerWindow,the destination window is the window
that contains the pointer.
* If w is InputFocusand if the focus window contains the
pointer,the destination window is the window that contains
the pointer; otherwise, the destination window is the focus
window.
To determine which clients should receive the specified events,
XSendExtensionEventuses the propagate argument as follows:
* If event_list is the empty set,the event is sent to the
client that created the destination window. If that client
no longer exists,no event is sent.
* If propagate is False,the event is sent to every client
selecting on destination any of the eventtypes specified by
the event_list array.
* If propagate is Trueand no clients have selected on
destination any ofthe events specified by the event_list
array,the destination is replaced with theclosest ancestor
of destination for which some client has selected atype
specified by the event-list array and for which no
interveningwindow has that type in
itsdo-not-propagate-mask. If no such window exists or if
the window isan ancestor of the focus window and
InputFocuswas originally specifiedas the destination, the
event is not sent to any clients. Otherwise, the event is
reported to every client selecting on the finaldestination
any of the events specified in the event_list array.
The event in the XEventstructure must be one of the events
defined by the input extension (or a BadValueerror results) so
that the X server can correctly byte-swapthe contents as
necessary. The contents of the event areotherwise unaltered and
unchecked by the X server except to force send_event to Truein
the forwarded event and to set the serial number in the event
correctly.
XSendExtensionEventreturns zero if the conversion to wire
protocol format failedand returns nonzero
otherwise.XSendExtensionEventcan generate BadClass, BadDevice,
BadValue, and BadWindow errors.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadWindow
A value for a Window argument does not name a defined
window.
libXi-1.7.1.901/man/XChangeFeedbackControl.man 0000664 0032045 0000764 00000000065 12116564643 015573 0000000 0000000 .so manlibmansuffix/XGetFeedbackControl.libmansuffix
libXi-1.7.1.901/man/XIQueryDevice.man 0000664 0032045 0000764 00000027602 12116564654 014006 0000000 0000000 '\" t
.\" Title: xiquerydevice
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIQUERYDEVICE" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIQueryDevice, XIFreeDeviceInfo \- get information about devices\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XIDeviceInfo* XIQueryDevice( Display *display,
int deviceid,
int *ndevices_return);
.fi
.sp
.nf
XIFreeDeviceInfo( XIDeviceInfo *info);
.fi
.sp
.nf
deviceid
Specifies the device to query or XIAllDevices or
XIAllMasterDevices\&.
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
ndevices_return
Returns the number of devices returned\&.
.fi
.sp
.nf
info
A list of device XIDeviceInfo structs to be freed\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XIQueryDevice returns information about one or more input
devices\&. If the deviceid specifies a device, ndevices_return is
1 and the returned information describes only the requested
device\&. If deviceid is XIAllDevices or XIAllMasterDevices,
ndevices_return is the number of devices or master devices,
respectively, and the returned information represents all
devices or all master devices, respectively\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
To free the XIDeviceInfo array returned by XIQueryDevice, use
XIFreeDeviceInfo\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
For each input device requested, the XIQueryDevice returns an
XIDeviceInfo structure\&. Each structure contains information
about the capabilities of one input device available to the
server\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct
{
int deviceid;
char *name;
int use;
int attachment;
Bool enabled;
int num_classes;
XIAnyClassInfo **classes;
} XIDeviceInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The deviceid is the numeric unique id of the device\&. A deviceid
is unique for the life\-time of a device but a server may re\-use
the id once a device has been removed\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The name points to a null\-terminated string specifying the
identifier of the device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The use and attachment fields specify the type of the device
and the current attachment or pairing\&.
\- If use is XIMasterPointer, the device is a master pointer and
attachment specifies the deviceid of the paired master
keyboard\&.
\- If use is XIMasterKeyboard, the device is a master keyboard,
and the attachment field specifies the paired master pointer\&.
\- If use is XISlavePointer, the device is a slave device and
currently attached to the master pointer specified in
attachement\&.
\- If use is XISlaveKeyboard, the device is a slave device an
currently attached to the master keyboard specified in
attachment\&.
\- If use is XIFloatingSlave, the device is a slave device
currently not attached to any master device\&. The value of the
attachment field for floating slave devices is undefined\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The enabled field specifies if the device is currently enabled
and can send events\&. Disabled devices will not send events\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The num_classes field specifies the number of input classes
pointed to by classes\&. The first two fields of all input
classes are identical\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct
{
int type;
int sourceid;
} XIAnyClassInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The type field specifies the type of the input class\&.
Currently, the following types are defined:
XIKeyClass, XIButtonClass, XIValuatorClass, XIScrollClass,
XITouchClass
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
In the future, additional types may be added\&. Clients are
required to ignore unknown input classes\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The sourceid is the deviceid this class originated from\&. For
master devices, the sourceid is typically the id of the slave
device currently sending events\&. For slave devices, the
sourceid is typically the device\*(Aqs id\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A device may have zero or one XIButtonClass, denoting the
device\*(Aqs capability to send button events\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
int mask_len;
unsigned char *mask;
} XIButtonState;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct
{
int type;
int sourceid;
int num_buttons;
Atom *labels;
XIButtonState state;
} XIButtonClassInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The num_buttons field specifies the number of buttons available
on this device\&. A device that has an XIButtonClass must have at
least one button\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
labels is a list of num_buttons Atoms specifying the button
labels for this device\&. If the label is not None, then the
label specifies the type of button in physical device order
(i\&.e\&. as the buttons are numbered on the physical input
device)\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The state is the current button state as seen by clients (i\&.e\&.
after button mapping is applied)\&. The mask_len field specifies
the length of mask in bytes\&. For each button on the device, the
respective bit in mask is set if the button is currently
logically down\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A device may have zero or one XIKeyClass, denoting the device\*(Aqs
capability to send key events\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct
{
int type;
int sourceid;
int num_keycodes;
int *keycodes;
} XIKeyClassInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The num_keycodes field specifies the number of keycodes
available on this device\&. A device that has an XIKeyClass must
have at least one keycode\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
keycodes is a list of num_keycodes keycodes the device may
send\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A device may have zero or more XIValuatorClass, denoting the
device\*(Aqs capability to send coordinates\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct
{
int type;
int sourceid;
int number;
Atom label;
double min;
double max;
double value;
int resolution;
int mode;
} XIValuatorClassInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The number field specifies the number of the axis on the
physical device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the label field is not None, the value of label is an Atom
describing the axis\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
min and max are the minimum and maximum values allowed on this
axis\&. If both are zero, no minumum or maximum values are set on
this device\&. value is the current value of this axis\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The resolution field specifies the resolution of the device in
units/m\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The mode specifies the mode of this axis\&. If the mode is
XIModeAbsolute this axis sends absolute coordinates\&. If the
mode is XIModeRelative, this device sends relative coordinates\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct
{
int type;
int sourceid;
int number;
int scroll_type;
double increment;
int flags;
} XIScrollClassInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
This class describes scrolling capability on a valuator\&. For
each XIScrollClassInfo, an XIValuatorClassInfo with the same
number is present on the device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The number field specifies the valuator number on the physical
device that this scroll information applies to\&. See the
respective XIValuatorClassInfo for detailed information on this
valuator\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The scroll_type field specifies the type of scrolling, either
XIScrollTypeVertical or XIScrollTypeHorizontal\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The increment specifies the value change considered one unit of
scrolling down\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The flags field specifies flags that apply to this scrolling
information:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If XIScrollFlagNoEmulation is set, the server will not
emulate legacy button events for valuator changes on this
valuator\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If XIScrollFlagPreferred is set, this axis is the
preferred axis for this scroll type and will be used for
the emulation of XI_Motion events when the driver submits
legacy scroll button events\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct
{
int type;
int sourceid;
int mode;
int num_touches;
} XITouchClassInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A device may have zero or one XITouchClassInfo, denoting
multi\-touch capability on the device\&. A device with a XITouchClassInfo
may send TouchBegin, TouchUpdate, TouchEnd and TouchOwnership events\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The mode field is either XIDirectTouch for direct\-input touch devices
such as touchscreens or XIDependentTouch for indirect input devices such
as touchpads\&. For XIDirectTouch devices, touch events are sent to window
at the position the touch occured\&. For XIDependentTouch devices, touch
events are sent to the window at the position of the device\*(Aqs sprite\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The num_touches field defines the maximum number of simultaneous touches
the device supports\&. A num_touches of 0 means the maximum number of
simultaneous touches is undefined or unspecified\&. This field should be
used as a guide only, devices will lie about their capabilities\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A device with an XITouchClassInfo may still send pointer events\&. The
valuators must be defined with the respective XIValuatorClass
classes\&. A valuator may send both pointer and touch\-events\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIQueryDevice can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIFreeDeviceInfo frees the information returned by
XIQueryDevice\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a pointer device\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIQueryVersion.man 0000664 0032045 0000764 00000007000 12116564656 014224 0000000 0000000 '\" t
.\" Title: xiqueryversion
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIQUERYVERSION" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIQueryVersion \- announce and query the support XI2 version\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XIQueryVersion( Display *display,
int *major_version_inout,
int *minor_version_inout);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
major_version_inout
Specifies the client\*(Aqs supported XI2 version, and
returns the server\*(Aqs supported version\&.
.fi
.sp
.nf
minor_version_inout
Specifies the client\*(Aqs supported XI2 version, and
returns the server\*(Aqs supported version\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
XIQueryVersion announces the client\*(Aqs supported XI2 version to
the server and returns server\*(Aqs supported X Input version\&. Clients
are required to use XIQueryVersion instead of XGetExtensionVersion
if they use XI2 calls\&. The server may treat a client differently
depending on the supported version announced by the client\&.
The major_version_inout must be 2 or greater, otherwise a BadValue
error occurs\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the server does not support XI2, XIQueryVersion returns BadRequest
to the client\&. Otherwise, XIQueryVersion returns Success\&. In both
cases major_version_inout and minor_version_inout are set to the
server\*(Aqs supported version\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Consecutive calls to XIQueryVersion by the same client always return the
first returned major\&.minor version\&. If the client requests a version
lower than the first returned major\&.minor version in a subsequent call, a
BadValue error occurs\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIQueryVersion can generate a BadValue error\&.
.fi
.if n \{\
.RE
.\}
.SH "EXAMPLES"
.sp
.if n \{\
.RS 4
.\}
.nf
int rc;
int major = 2;
int minor = 0;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
rc = XIQueryVersion(dpy, &major, &minor);
if (rc == Success)
printf("XI2 supported\&. (%d\&.%d)\en", major, minor);
else if (rc == BadRequest)
printf("No XI2 support\&. (%d\&.%d only)\en", major, minor);
else
printf("Internal error\en");
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
A value is outside of the permitted range\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGrabDeviceButton.txt 0000664 0032045 0000764 00000014751 12110553734 014673 0000000 0000000 XGRABDEVICEBUTTON(libmansuffix)
===============================
NAME
----
XGrabDeviceButton, XUngrabDeviceButton - grab/ungrab extension
input device buttons
SYNOPSIS
--------
#include
int XGrabDeviceButton( Display *display,
XDevice *device,
unsigned int button,
unsigned int modifiers,
XDevice* modifier_device,
Window grab_window,
Bool owner_events,
unsigned int event_count,
XEventClass *event_list,
int this_device_mode,
int other_devices_mode);
int XUngrabDeviceButton( Display *display,
XDevice *device,
unsigned int button,
unsigned int modifiers,
XDevice* modifier_device,
Window grab_window);
display
Specifies the connection to the X server.
device
Specifies the device that is to be grabbed or released
button
Specifies the device button that is to be grabbed or
released or AnyButton.
modifiers
Specifies the set of keymasks or AnyModifier.The mask is
the bitwise inclusive OR of the valid keymask bits.
Valid bits are: Shiftmask, LockMask, ControlMask,
Mod1Mask, Mod2Mask,Mod3Mask, Mod4Mask, Mod5Mask.
modifier_device
specifies the device whose modifiers are to be used. If
the modifier_devicespecified is NULL, the X keyboard
will be used as the modifier_device.
grab_window
Specifies the grab window.
owner_events
Specifies a Boolean value that indicates whether the
deviceevents are to be reported as usual or reported
with respect to the grab windowif selected by the event
list.
event_count
Specifies the number of event classes in the event list.
event_list
Specifies which events are reported to the client.
this_device_mode
Specifies further processing of events from this
device.You can pass GrabModeSync or GrabModeAsync.
other_devices_mode
Specifies further processing of events from all other
devices.You can pass GrabModeSync or GrabModeAsync.
DESCRIPTION
-----------
The XGrabDeviceButton request establishes a passive grab. In
the future, the device is actively grabbed (as for XGrabDevice,
the last-grab time is set to the time at which the button was
pressed (as transmitted in the DeviceButtonPress event), and
the DeviceButtonPress event is reported if all of the following
conditions are true:
* The device is not grabbed, and the specified button is
logically pressed when the specified modifier keys are
logically down on the specified modifier device and no
other buttons or modifier keys are logically down.
* Either the grab window is an ancestor of (or is) the focus
window, OR the grab window is a descendent of the focus
window and contains the device.
* A passive grab on the same button/modifier combination does
not exist on any ancestor of grab_window.
The interpretation of the remaining arguments is as for
XGrabDevice. The active grab is terminated automatically when
the logical state of the device has all buttons released
(independent of the logical state of the modifier keys).
Note that the logical state of a device (as seen by client
applications) may lag the physical state if device event
processing is frozen.
This request overrides all previous grabs by the same client on
the same button/modifier combinations on the same window. A
modifiers of AnyModifier is equivalent to issuing the grab
request for all possible modifier combinations (including the
combination of no modifiers). It is not required that all
modifiers specified have currently assigned KeyCodes. A button
of AnyButton is equivalent to issuing the request for all
possible buttons. Otherwise, it is not required that the
specified button currently be assigned to a physical button.
A modifier_device of NULL indicates that the X keyboard is to
be used as the modifier_device.
If some other client has already issued a XGrabDeviceButton
with the same button/modifier combination on the same window, a
BadAccess error results. When using AnyModifier or AnyButton ,
the request fails completely, and a BadAccess error results (no
grabs are established) if there is a conflicting grab for any
combination. XGrabDeviceButton has no effect on an active grab.
XGrabDeviceButton can generate BadClass, BadDevice, BadMatch,
BadValue, and BadWindow errors..P The XUngrabDeviceButton
request releases the passive grab for a button/modifier
combination on the specified window if it was grabbed by this
client. A modifier of AnyModifier is equivalent to issuing the
ungrab request for all possible modifier combinations,
including the combination of no modifiers. A button of
AnyButton is equivalent to issuing the request for all possible
buttons. XUngrabDeviceButton has no effect on an active grab.
A modifier_device of NULL indicates that the X keyboard should
be used as the modifier_device.
XUngrabDeviceButton can generate BadDevice, BadMatch, BadValue
and BadWindow errors.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadMatch
This error may occur if an XGrabDeviceButton request was
made specifying a device that has no buttons, or
specifying a modifier device that has no keys.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadWindow
A value for a Window argument does not name a defined
Window.
SEE ALSO
--------
XAllowDeviceEvents(libmansuffix), XGrabDevice(libmansuffix), XGrabDeviceKey(libmansuffix)
libXi-1.7.1.901/man/XIUngrabFocusIn.man 0000664 0032045 0000764 00000000055 12116564654 014257 0000000 0000000 .so manlibmansuffix/XIGrabEnter.libmansuffix
libXi-1.7.1.901/man/XIChangeProperty.txt 0000664 0032045 0000764 00000020513 12110553734 014540 0000000 0000000 XICHANGEPROPERTY(libmansuffix)
==============================
NAME
----
XIChangeProperty, XIGetProperty, XIDeleteProperty - change, retrieve
or delete a device's property.
SYNOPSIS
--------
#include
void XIChangeProperty( Display* dpy,
int deviceid,
Atom property,
Atom type,
int format,
int mode,
unsigned char *data,
int num_items)
void XIDeleteProperty( Display *dpy,
int deviceid,
Atom property)
Status XIGetProperty( Display *dpy,
int deviceid,
Atom property,
long offset,
long length,
Bool delete_property,
Atom type,
Atom *type_return,
int *format_return,
unsigned long *num_items_return,
unsigned long *bytes_after_return,
unsigned char **data)
bytes_after_return
Returns the number of bytes remaining to be read in the prop-
erty if a partial read was performed.
data
Specifies the property data.
display
Specifies the connection to the X server.
delete_property
Specifies a Boolean value that determines whether the property
is to be deleted.
deviceid
The device to list the properties for.
format
Specifies whether the data should be viewed as a list of
8-bit, 16-bit, or 32-bit quantities. Possible values are 8,
16, and 32. This information allows the X server to correctly
perform byte-swap operations as necessary. If the
format is 16-bit or 32-bit, you must explicitly cast your
data pointer to an (unsigned char *) in the call to
XIChangeProperty.
format_return
Returns the actual format of the property.
length
Specifies the length in 32-bit multiples of the data to be
retrieved.
offset
Specifies the offset in the specified property (in 32-bit
quantities) where the data is to be retrieved.
mode
One of XIPropModeAppend, XIPropModePrepend or XIPropModeReplace.
num_items
Number of items in data in the format specified.
nitems_return
Returns the actual number of 8-bit, 16-bit, or 32-bit items
stored in data.
property
Specifies the property name.
type
Specifies the type of the property. The X server does not
interpret the type but simply passes it back to an application
that later calls XIGetProperty.
type_return
Returns the atom identifier that defines the actual type of
the property.
DESCRIPTION
-----------
The XIGetProperty function returns the actual type of the property;
the actual format of the property; the number of 8-bit, 16-bit,
or 32-bit items transferred; the number of bytes remaining to be read
in the property; and a pointer to the data actually returned.
XIGetProperty sets the return arguments as follows:
- If the specified property does not exist for the specified device,
XIGetProperty returns None to actual_type_return and the
value zero to actual_format_return and bytes_after_return. The
nitems_return argument is empty. In this case, the delete argument
is ignored.
- If the specified property exists but its type does not match the
specified type, XIGetProperty returns the actual property
type to actual_type_return, the actual property format (never
zero) to actual_format_return, and the property length in bytes
(even if the actual_format_return is 16 or 32) to
bytes_after_return. It also ignores the delete argument. The
nitems_return argument is empty.
- If the specified property exists and either you assign
XIAnyPropertyType to the req_type argument or the specified type
matches the actual property type, XIGetProperty returns the
actual property type to actual_type_return and the actual property
format (never zero) to actual_format_return. It also returns a value
to bytes_after_return and nitems_return, by defining the following
values:
N = length of the stored property in bytes
I = 4 * offset
T = N - I
L = MINIMUM(T, 4 * length)
A = N - (I + L)
The returned value starts at byte index I in the property
(indexing from zero), and its length in bytes is L. If the value
for long_offset causes L to be negative, a BadValue error results.
The value of bytes_after_return is A, giving the number of trailing
unread bytes in the stored property.
If the returned format is 8, the returned data is represented as a char
array. If the returned format is 16, the returned data is represented
as a uint16_t array and should be cast to that type to obtain the ele-
ments. If the returned format is 32, the returned data is represented
as a uint32_t array and should be cast to that type to obtain the elements.
XIGetProperty always allocates one extra byte in prop_return (even
if the property is zero length) and sets it to zero so that simple
properties consisting of characters do not have to be copied into yet
another string before use.
If delete is True and bytes_after_return is zero, XIGetProperty
deletes the property from the window and generates an XIPropertyNotify
event on the window.
The function returns Success if it executes successfully. To free the
resulting data, use XFree.
XIGetProperty can generate BadAtom, BadValue, and BadWindow
errors.
The XIChangeProperty function alters the property for the specified device
and causes the X server to generate a XIPropertyNotify event for that
device. XIChangeProperty performs the following:
- If mode is XIPropModeReplace, XIChangeProperty discards the previous
property value and stores the new data.
- If mode is XIPropModePrepend or XIPropModeAppend, XIChangeProperty
inserts the specified data before the beginning of the existing
data or onto the end of the existing data, respectively. The type
and format must match the existing property value, or a BadMatch
error results. If the property is undefined, it is treated as
defined with the correct type and format with zero-length data.
If the specified format is 8, the property data must be a char array.
If the specified format is 16, the property data must be a uint16_t array.
If the specified format is 32, the property data must be a uint32_t array.
The lifetime of a property is not tied to the storing client.
Properties remain until explicitly deleted, until the device is removed,
or until the server resets. The maximum size of a property is server
dependent and can vary dynamically depending on the amount of memory
the server has available. (If there is insufficient space, a BadAlloc
error results.)
XIChangeProperty can generate BadAlloc, BadAtom, BadMatch, BadValue, and
BadDevice errors.
The XIDeleteProperty function deletes the specified property only if the
property was defined on the specified device and causes the X server to
generate a XIPropertyNotify event for the device unless the property does
not exist.
XIDeleteProperty can generate BadAtom and BadDevice errors.
DIAGNOSTICS
-----------
BadAlloc
The server failed to allocate the requested resource or
server memory.
BadAtom
A value for an Atom argument does not name a defined Atom.
BadValue
Some numeric value falls outside the range of values accepted
by the request. Unless a specific range is specified for an
argument, the full range defined by the argument’s type is
accepted. Any argument defined as a set of alternatives can
generate this error.
BadDevice
An invalid device was specified. The device does not
exist.
BadAtom
An invalid property was specified. The property does not
exist.
BUGS
----
The protocol headers for XI 2.0 did not provide
XIAnyPropertyType, XIPropModeReplace, XIPropModePrepend or
XIPropModeAppend. Use AnyPropertyType, PropModeReplace,
PropModePrepend and PropModeAppend instead, respectively.
SEE ALSO
--------
XIListProperties(libmansuffix)
libXi-1.7.1.901/man/XChangePointerDevice.txt 0000664 0032045 0000764 00000004723 12110553734 015350 0000000 0000000 XCHANGEPOINTERDEVICE(libmansuffix)
==================================
NAME
----
XChangePointerDevice - change which device is the X pointer
SYNOPSIS
--------
#include
Status XChangePointerDevice( Display *display,
XDevice *device,
int xaxis,
int yaxis);
display
Specifies the connection to the X server.
device
Specifies the device to be used as the X pointer.
xaxis
Specifies the axis of the device to be used as the X
pointer x-axis.
yaxis
Specifies the axis of the device to be used as the X
pointer y-axis.
DESCRIPTION
-----------
The XChangePointerDevice request causes the server to use the
specified device as the X pointer. The device must have been
opened by the client via XOpenDevice or a BadDevice error will
result. The device must support input class Valuators or a
BadMatch error will result. If the implementation does not
support use of the specified device as the X pointer, a
BadDevice error will result.
If the specified device is grabbed by another client,
AlreadyGrabbed is returned. If the specified device is frozen
by a grab on another device, GrabFrozen is returned. If the
request is successful, Success is returned.
If the request succeeds, a ChangeDeviceNotify event is sent to
all clients that have selected that event. A MappingNotify
event with request = MappingPointer is sent to all clients. The
specified device becomes the X pointer, and the old X pointer
becomes accessible through the input extension protocol
requests.
XChangePointerDevice can generate a BadDevice or a BadMatch
error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist, has not been opened by this client via
XOpenInputDevice, or is already one of the core X input
devices (pointer or keyboard). This error may also occur
if the server implementation does not support using the
specified device as the X pointer.
BadMatch
This error may occur if an XChangePointerDevice request
was made specifying a device that has less than two
valuators, or specifying a valuator index beyond the
range supported by the device.
SEE ALSO
--------
XChangeKeyboardDevice(libmansuffix)
libXi-1.7.1.901/man/XOpenDevice.txt 0000664 0032045 0000764 00000007744 12110553734 013531 0000000 0000000 XOPENDEVICE(libmansuffix)
=========================
NAME
----
XOpenDevice, XCloseDevice - open or close an extension input
device
SYNOPSIS
--------
#include
XDevice *XOpenDevice( Display *display,
XID device_id);
XCloseDevice( Display *display,
XDevice *device);
display
Specifies the connection to the X server.
device_id
Specifies the id of the device to be opened
device
Specifies the device to be closed
DESCRIPTION
-----------
The XOpenDevice request makes an input device accessible to a
client through input extension protocol requests. If
successful, it returns a pointer to an XDevice structure.
The XCloseDevice request makes an input device inaccessible to
a client through input extension protocol requests. Before
terminating, and client that has opened input devices through
the input extension should close them via CloseDevice.
When a client makes an XCloseDevice request, any active grabs
that the client has on the device are released. Any event
selections that the client has are deleted, as well as any
passive grabs. If the requesting client is the last client
accessing the device, the server may disable all access by X to
the device.
XOpenDevice and XCloseDevice can generate a BadDevice error.
Structures
The XDevice structure returned by XOpenDevice contains:
typedef struct {
XID device_id;
int num_classes;
XInputClassInfo *classes;
} XDevice;
The classes field is a pointer to an array of XInputClassInfo
structures. Each element of this array contains an event type
base for a class of input supported by the specified device.
The num_classes field indicates the number of elements in the
classes array.
The XInputClassInfo structure contains:
typedef struct {
unsigned char input_class;
unsigned char event_type_base;
} XInputClassInfo;
The input_class field identifies one class of input supported
by the device. Defined types include KeyClass, ButtonClass,
ValuatorClass, ProximityClass, FeedbackClass, FocusClass, and
OtherClass. The event_type_base identifies the event type of
the first event in that class.
The information contained in the XInputClassInfo structure is
used by macros to obtain the event classes that clients use in
making XSelectExtensionEvent requests. Currently defined macros
include DeviceKeyPress, DeviceKeyRelease, DeviceButtonPress,
DeviceButtonRelese, DeviceMotionNotify, DeviceFocusIn,
DeviceFocusOut, ProximityIn, ProximityOut, DeviceStateNotify,
DeviceMappingNotify, ChangeDeviceNotify,
DevicePointerMotionHint, DeviceButton1Motion,
DeviceButton2Motion, DeviceButton3Motion, DeviceButton4Motion,
DeviceButton5Motion, DeviceButtonMotion, DeviceOwnerGrabButton,
DeviceButtonPressGrab, and NoExtensionEvent.
To obtain the proper event class for a particular device, one
of the above macros is invoked using the XDevice structure for
that device. For example,
DeviceKeyPress (*device, type, eventclass);
returns the DeviceKeyPress event type and the eventclass for
DeviceKeyPress events from the specified device.
This eventclass can then be used in an XSelectExtensionEvent
request to ask the server to send DeviceKeyPress events from
this device. When a selected event is received via XNextEvent,
the type can be used for comparison with the type in the event.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist, or is the X keyboard or X pointer. This
error may also occur if some other client has caused the
specified device to become the X keyboard or X pointer
device via the XChangeKeyboardDevice or
XChangePointerDevice requests.
libXi-1.7.1.901/man/XSetDeviceMode.man 0000664 0032045 0000764 00000005742 12116564650 014125 0000000 0000000 '\" t
.\" Title: xsetdevicemode
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XSETDEVICEMODE" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XSetDeviceMode \- change the mode of a device
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XSetDeviceMode( Display *display,
XDevice *device,
int mode);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose mode is to be changed\&.
.fi
.sp
.nf
mode
Specifies the mode\&.You can pass Absolute,or Relative\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XSetDeviceMode request changes the mode of an input device
that is capable of reporting either absolute positional
information or relative motion information\&. Not all input
devices are capable of reporting motion data, and not all are
capable of changing modes from Absolute to Relative\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XSetDeviceMode can generate a BadDevice or BadMode error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XSetDeviceMode request is
made specifying a device that has no valuators and
reports no axes of motion\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMode
An invalid mode was specified\&. This error will also be
returned if the specified device is not capable of
supporting the XSetDeviceMode request\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIQueryDevice.txt 0000664 0032045 0000764 00000023203 12110553734 014032 0000000 0000000 XIQUERYDEVICE(libmansuffix)
============================
NAME
----
XIQueryDevice, XIFreeDeviceInfo - get information about devices.
SYNOPSIS
--------
#include
XIDeviceInfo* XIQueryDevice( Display *display,
int deviceid,
int *ndevices_return);
XIFreeDeviceInfo( XIDeviceInfo *info);
deviceid
Specifies the device to query or XIAllDevices or
XIAllMasterDevices.
display
Specifies the connection to the X server.
ndevices_return
Returns the number of devices returned.
info
A list of device XIDeviceInfo structs to be freed.
DESCRIPTION
-----------
The XIQueryDevice returns information about one or more input
devices. If the deviceid specifies a device, ndevices_return is
1 and the returned information describes only the requested
device. If deviceid is XIAllDevices or XIAllMasterDevices,
ndevices_return is the number of devices or master devices,
respectively, and the returned information represents all
devices or all master devices, respectively.
To free the XIDeviceInfo array returned by XIQueryDevice, use
XIFreeDeviceInfo.
For each input device requested, the XIQueryDevice returns an
XIDeviceInfo structure. Each structure contains information
about the capabilities of one input device available to the
server.
typedef struct
{
int deviceid;
char *name;
int use;
int attachment;
Bool enabled;
int num_classes;
XIAnyClassInfo **classes;
} XIDeviceInfo;
The deviceid is the numeric unique id of the device. A deviceid
is unique for the life-time of a device but a server may re-use
the id once a device has been removed.
The name points to a null-terminated string specifying the
identifier of the device.
The use and attachment fields specify the type of the device
and the current attachment or pairing.
- If use is XIMasterPointer, the device is a master pointer and
attachment specifies the deviceid of the paired master
keyboard.
- If use is XIMasterKeyboard, the device is a master keyboard,
and the attachment field specifies the paired master pointer.
- If use is XISlavePointer, the device is a slave device and
currently attached to the master pointer specified in
attachement.
- If use is XISlaveKeyboard, the device is a slave device an
currently attached to the master keyboard specified in
attachment.
- If use is XIFloatingSlave, the device is a slave device
currently not attached to any master device. The value of the
attachment field for floating slave devices is undefined.
The enabled field specifies if the device is currently enabled
and can send events. Disabled devices will not send events.
The num_classes field specifies the number of input classes
pointed to by classes. The first two fields of all input
classes are identical.
typedef struct
{
int type;
int sourceid;
} XIAnyClassInfo;
The type field specifies the type of the input class.
Currently, the following types are defined:
XIKeyClass, XIButtonClass, XIValuatorClass, XIScrollClass,
XITouchClass
In the future, additional types may be added. Clients are
required to ignore unknown input classes.
The sourceid is the deviceid this class originated from. For
master devices, the sourceid is typically the id of the slave
device currently sending events. For slave devices, the
sourceid is typically the device's id.
A device may have zero or one XIButtonClass, denoting the
device's capability to send button events.
typedef struct {
int mask_len;
unsigned char *mask;
} XIButtonState;
typedef struct
{
int type;
int sourceid;
int num_buttons;
Atom *labels;
XIButtonState state;
} XIButtonClassInfo;
The num_buttons field specifies the number of buttons available
on this device. A device that has an XIButtonClass must have at
least one button.
labels is a list of num_buttons Atoms specifying the button
labels for this device. If the label is not None, then the
label specifies the type of button in physical device order
(i.e. as the buttons are numbered on the physical input
device).
The state is the current button state as seen by clients (i.e.
after button mapping is applied). The mask_len field specifies
the length of mask in bytes. For each button on the device, the
respective bit in mask is set if the button is currently
logically down.
A device may have zero or one XIKeyClass, denoting the device's
capability to send key events.
typedef struct
{
int type;
int sourceid;
int num_keycodes;
int *keycodes;
} XIKeyClassInfo;
The num_keycodes field specifies the number of keycodes
available on this device. A device that has an XIKeyClass must
have at least one keycode.
keycodes is a list of num_keycodes keycodes the device may
send.
A device may have zero or more XIValuatorClass, denoting the
device's capability to send coordinates.
typedef struct
{
int type;
int sourceid;
int number;
Atom label;
double min;
double max;
double value;
int resolution;
int mode;
} XIValuatorClassInfo;
The number field specifies the number of the axis on the
physical device.
If the label field is not None, the value of label is an Atom
describing the axis.
min and max are the minimum and maximum values allowed on this
axis. If both are zero, no minumum or maximum values are set on
this device. value is the current value of this axis.
The resolution field specifies the resolution of the device in
units/m.
The mode specifies the mode of this axis. If the mode is
XIModeAbsolute this axis sends absolute coordinates. If the
mode is XIModeRelative, this device sends relative coordinates.
typedef struct
{
int type;
int sourceid;
int number;
int scroll_type;
double increment;
int flags;
} XIScrollClassInfo;
This class describes scrolling capability on a valuator. For
each XIScrollClassInfo, an XIValuatorClassInfo with the same
number is present on the device.
The number field specifies the valuator number on the physical
device that this scroll information applies to. See the
respective XIValuatorClassInfo for detailed information on this
valuator.
The scroll_type field specifies the type of scrolling, either
XIScrollTypeVertical or XIScrollTypeHorizontal.
The increment specifies the value change considered one unit of
scrolling down.
The flags field specifies flags that apply to this scrolling
information:
If XIScrollFlagNoEmulation is set, the server will not
emulate legacy button events for valuator changes on this
valuator.
If XIScrollFlagPreferred is set, this axis is the
preferred axis for this scroll type and will be used for
the emulation of XI_Motion events when the driver submits
legacy scroll button events.
typedef struct
{
int type;
int sourceid;
int mode;
int num_touches;
} XITouchClassInfo;
A device may have zero or one XITouchClassInfo, denoting
multi-touch capability on the device. A device with a XITouchClassInfo
may send TouchBegin, TouchUpdate, TouchEnd and TouchOwnership events.
The mode field is either XIDirectTouch for direct-input touch devices
such as touchscreens or XIDependentTouch for indirect input devices such
as touchpads. For XIDirectTouch devices, touch events are sent to window
at the position the touch occured. For XIDependentTouch devices, touch
events are sent to the window at the position of the device's sprite.
The num_touches field defines the maximum number of simultaneous touches
the device supports. A num_touches of 0 means the maximum number of
simultaneous touches is undefined or unspecified. This field should be
used as a guide only, devices will lie about their capabilities.
A device with an XITouchClassInfo may still send pointer events. The
valuators must be defined with the respective XIValuatorClass
classes. A valuator may send both pointer and touch-events.
XIQueryDevice can generate a BadDevice error.
XIFreeDeviceInfo frees the information returned by
XIQueryDevice.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The device does not
exist or is not a pointer device.
libXi-1.7.1.901/man/XAllowDeviceEvents.man 0000664 0032045 0000764 00000015515 12116564637 015034 0000000 0000000 '\" t
.\" Title: xallowdeviceevents
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XALLOWDEVICEEVENTS" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XAllowDeviceEvents \- release queued events
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XAllowDeviceEvents( Display *display,
XDevice *device,
int event_mode,
Time time);
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device from which events are to be
allowed\&.
.fi
.sp
.nf
event_mode
Specifies the event mode\&.You can pass AsyncThisDevice,
SyncThisDevice, ReplayThisDevice, AsyncOtherDevices,
SyncAll,or AsyncAll\&.
.fi
.sp
.nf
time
Specifies the time\&.You can pass either a timestamp or
CurrentTime\&.
.fi
.SH "DESCRIPTION"
.sp
The XAllowDeviceEvents function releases some queued events if the client has caused a device to freeze\&. It has no effect if the specified time is earlier than the last\-grab time of the most recent active grab for the client and device, or if the specified time is later than the current X server time\&.
.sp
The following describes the processing that occurs depending on what constant you pass to the event_mode argument\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
AsyncThisDevice \- If the specified device is frozen by the client, event processing for that device continues as usual\&. If the device is frozen multiple times by the client on behalf of multiple separate grabs, AsyncThisDevice thaws for all\&.AsyncThisDevice has no effect if the specified device is not frozen by the client, but the device need not be grabbed by the client\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
SyncThisDevice \- If the specified device is frozen and actively grabbed by the client, event processing for that device continues normally until the next key or button event is reported to the client\&. At this time, the specified device again appears to freeze\&. However, if the reported event causes the grab to be released, the specified device does not freeze\&. SyncThisDevice has no effect if the specified device is not frozen by the client or is not grabbed by the client\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
ReplayThisDevice \- If the specified device is actively grabbed by the client and is frozen as the result of an event having been sent to the client (either from the activation of a GrabDeviceButton or from a previous AllowDeviceEvents with mode SyncThisDevice, but not from a GrabDevice), the grab is released and that event is completely reprocessed\&. This time, however, the request ignores any passive grabs at or above (toward the root) that the grab\-window of the grab just released\&. The request has no effect if the specified device is not grabbed by the client or if it is not frozen as the result of an event\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
AsyncOtherDevices \- If the remaining devices are frozen by the client, event processing for them continues as usual\&. If the other devices are frozen multiple times by the client on behalf of multiple grabs, AsyncOtherDevices "thaws" for all\&. AsyncOtherDevices has no effect if the devices are not frozen by the client\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
SyncAll \- If all devices are frozen by the client, event processing (for all devices) continues normally until the next button or key event is reported to the client for a grabbed device, at which time all devices again appear to freeze\&. However, if the reported event causes the grab to be released, then the devices do not freeze\&. If any device is still grabbed, then a subsequent event for it will still cause all devices to freeze\&. SyncAll has no effect unless all devices are frozen by the client\&. If any device is frozen twice by the client on behalf of two separate grabs, SyncAll thaws for both\&. A subsequent freeze for SyncAll will only freeze each device once\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
AsyncAll \- If all devices are frozen by the client, event processing for all devices continues normally\&. If any device is frozen multiple times by the client on behalf of multiple separate grabs, AsyncAll thaws for all\&. AsyncAll has no effect unless all devices are frozen by the client\&.
.RE
.sp
AsyncThisDevice, SyncThisDevice, and ReplayThisDevice have no effect on the processing of events from the remaining devices\&.AsyncOtherDevices has no effect on the processing of events from the specified device\&. When the event_mode is SyncAll or AsyncAll, the device parameter is ignored\&.
.sp
It is possible for several grabs of different devices by the same or different clients to be active simultaneously\&. If a device is frozen on behalf of any grab, no event processing is performed for the device\&. It is possible for a single device to be frozen because of several grabs\&. In this case, the freeze must be released on behalf of each grab before events can again be processed\&.
.sp
XAllowDeviceEvents can generate a BadDevice or BadValue error\&.
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
An invalid mode was specified on the request\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XGrabDevice(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIUngrabTouchBegin.man 0000664 0032045 0000764 00000000056 12116564654 014741 0000000 0000000 .so manlibmansuffix/XIGrabButton.libmansuffix
libXi-1.7.1.901/man/XChangeDeviceKeyMapping.man 0000664 0032045 0000764 00000000066 12116564641 015731 0000000 0000000 .so manlibmansuffix/XGetDeviceKeyMapping.libmansuffix
libXi-1.7.1.901/man/XGrabDeviceButton.man 0000664 0032045 0000764 00000020234 12116564644 014630 0000000 0000000 '\" t
.\" Title: xgrabdevicebutton
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGRABDEVICEBUTTON" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGrabDeviceButton, XUngrabDeviceButton \- grab/ungrab extension input device buttons
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XGrabDeviceButton( Display *display,
XDevice *device,
unsigned int button,
unsigned int modifiers,
XDevice* modifier_device,
Window grab_window,
Bool owner_events,
unsigned int event_count,
XEventClass *event_list,
int this_device_mode,
int other_devices_mode);
.fi
.sp
.nf
int XUngrabDeviceButton( Display *display,
XDevice *device,
unsigned int button,
unsigned int modifiers,
XDevice* modifier_device,
Window grab_window);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device that is to be grabbed or released
.fi
.sp
.nf
button
Specifies the device button that is to be grabbed or
released or AnyButton\&.
.fi
.sp
.nf
modifiers
Specifies the set of keymasks or AnyModifier\&.The mask is
the bitwise inclusive OR of the valid keymask bits\&.
Valid bits are: Shiftmask, LockMask, ControlMask,
Mod1Mask, Mod2Mask,Mod3Mask, Mod4Mask, Mod5Mask\&.
.fi
.sp
.nf
modifier_device
specifies the device whose modifiers are to be used\&. If
the modifier_devicespecified is NULL, the X keyboard
will be used as the modifier_device\&.
.fi
.sp
.nf
grab_window
Specifies the grab window\&.
.fi
.sp
.nf
owner_events
Specifies a Boolean value that indicates whether the
deviceevents are to be reported as usual or reported
with respect to the grab windowif selected by the event
list\&.
.fi
.sp
.nf
event_count
Specifies the number of event classes in the event list\&.
.fi
.sp
.nf
event_list
Specifies which events are reported to the client\&.
.fi
.sp
.nf
this_device_mode
Specifies further processing of events from this
device\&.You can pass GrabModeSync or GrabModeAsync\&.
.fi
.sp
.nf
other_devices_mode
Specifies further processing of events from all other
devices\&.You can pass GrabModeSync or GrabModeAsync\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XGrabDeviceButton request establishes a passive grab\&. In
the future, the device is actively grabbed (as for XGrabDevice,
the last\-grab time is set to the time at which the button was
pressed (as transmitted in the DeviceButtonPress event), and
the DeviceButtonPress event is reported if all of the following
conditions are true:
* The device is not grabbed, and the specified button is
logically pressed when the specified modifier keys are
logically down on the specified modifier device and no
other buttons or modifier keys are logically down\&.
* Either the grab window is an ancestor of (or is) the focus
window, OR the grab window is a descendent of the focus
window and contains the device\&.
* A passive grab on the same button/modifier combination does
not exist on any ancestor of grab_window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The interpretation of the remaining arguments is as for
XGrabDevice\&. The active grab is terminated automatically when
the logical state of the device has all buttons released
(independent of the logical state of the modifier keys)\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Note that the logical state of a device (as seen by client
applications) may lag the physical state if device event
processing is frozen\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
This request overrides all previous grabs by the same client on
the same button/modifier combinations on the same window\&. A
modifiers of AnyModifier is equivalent to issuing the grab
request for all possible modifier combinations (including the
combination of no modifiers)\&. It is not required that all
modifiers specified have currently assigned KeyCodes\&. A button
of AnyButton is equivalent to issuing the request for all
possible buttons\&. Otherwise, it is not required that the
specified button currently be assigned to a physical button\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A modifier_device of NULL indicates that the X keyboard is to
be used as the modifier_device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If some other client has already issued a XGrabDeviceButton
with the same button/modifier combination on the same window, a
BadAccess error results\&. When using AnyModifier or AnyButton ,
the request fails completely, and a BadAccess error results (no
grabs are established) if there is a conflicting grab for any
combination\&. XGrabDeviceButton has no effect on an active grab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGrabDeviceButton can generate BadClass, BadDevice, BadMatch,
BadValue, and BadWindow errors\&.\&.P The XUngrabDeviceButton
request releases the passive grab for a button/modifier
combination on the specified window if it was grabbed by this
client\&. A modifier of AnyModifier is equivalent to issuing the
ungrab request for all possible modifier combinations,
including the combination of no modifiers\&. A button of
AnyButton is equivalent to issuing the request for all possible
buttons\&. XUngrabDeviceButton has no effect on an active grab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A modifier_device of NULL indicates that the X keyboard should
be used as the modifier_device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XUngrabDeviceButton can generate BadDevice, BadMatch, BadValue
and BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGrabDeviceButton request was
made specifying a device that has no buttons, or
specifying a modifier device that has no keys\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XAllowDeviceEvents(libmansuffix), XGrabDevice(libmansuffix), XGrabDeviceKey(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIChangeHierarchy.txt 0000664 0032045 0000764 00000007441 12110553734 014637 0000000 0000000 XICHANGEHIERARCHY(libmansuffix)
===============================
NAME
----
XIChangeHierarchy - change the device hierarchy.
SYNOPSIS
--------
#include
Status XIChangeHierarchy( Display *display,
XIAnyHierarchyChangeInfo *changes,
int num_changes);
display
Specifies the connection to the X server.
num_changes
Specifies the number of elements in changes.
changes
Specifies the changes to be made.
DESCRIPTION
-----------
XIChangeHierarchy modifies the device hierarchy by creating or
removing master devices or changing the attachment of slave
devices. If num_changes is non-zero, changes is an array of
XIAnyHierarchyChangeInfo structures. If num_changes is equal or less than
zero, XIChangeHierarchy does nothing.
XIChangeHierarchy processes changes in order, effective
immediately. If an error occurs, processing is aborted and the
error is reported to the client. Changes already made remain
effective.
The list of changes is any combination of
XIAnyHierarchyChangeInfo. The type of a hierarchy change can be
XIAddMaster, XIRemoveMaster, XIAttachSlave or XIDetachSlave.
typedef union {
int type;
XIAddMasterInfo add;
XIRemoveMasterInfo remove;
XIAttachSlave attach;
XIDetachSlave detach;
} XIAnyHierarchyChangeInfo;
typedef struct {
int type; /* XIAddMaster */
char* name;
Bool send_core;
Bool enable;
} XIAddMasterInfo;
typedef struct {
int type; /* XIRemoveMaster */
int deviceid;
int return_mode;
int return_pointer;
int return_keyboard;
} XIRemoveMasterInfo;
typedef struct {
int type; /* XIAttachSlave */
int deviceid;
int new_master;
} XIAttachSlaveInfo;
typedef struct {
int type; /* XIDetachSlave */
int deviceid;
} XIDetachSlaveInfo;
XIAddMasterInfo creates a new master pointer and a new
master keyboard labelled "name pointer" and "name keyboard"
respectively. If sendCore is True, the devices will send core
events. If enable is True, the device is enabled immediately.
XIAddMasterInfo can generate a BadValue error.
XIRemoveMasterInfo removes device and its paired master device.
If returnMode is XIAttachToMaster, all pointers attached to
device or its paired master device are attached to
returnPointer. Likewise, all keyboards are attached to
returnKeyboard. If returnMode is XIFloating, all attached
devices are set to floating.
XIRemoveMasterInfo can generate a BadValue and a BadDevice
error.
XIAttachSlaveInfo attaches device to newMaster. If the device
is currently attached to a master device, it is detached from
the master device and attached to the new master device.
XIAttachSlaveInfo can generate a BadDevice error.
XIDettachSlaveInfo deattaches device from the current master
device and sets it floating. If the device is already floating,
no changes are made.
XIDetachSlaveInfo can generate a BadDevice error.
XIChangeHierarchy generates an XIHierarchyEvent if any
modifications were successful.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The device does not
exist or is not a appropriate for the type of change.
BadValue
Some numeric value falls out of the allowed range.
libXi-1.7.1.901/man/XIWarpPointer.man 0000664 0032045 0000764 00000010136 12116564660 014022 0000000 0000000 '\" t
.\" Title: xiwarppointer
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIWARPPOINTER" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIWarpPointer \- move a device\*(Aqs pointer\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Bool XIWarpPointer( Display *display,
int deviceid,
Window src_w,
Window dest_w,
double src_x,
double src_y,
int src_width,
int src_height,
double dest_x,
double dest_y);
.fi
.sp
.nf
dest_w
Specifies the destination window or None\&.
.fi
.sp
.nf
dest_x, dest_y
Specify the x and y coordinates within the destination
window\&.
.fi
.sp
.nf
deviceid
Specifies the master pointer device or floating slave
device to move\&.
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
src_x, src_y, src_width, src_height
Specify a rectangle in the source window\&.
.fi
.sp
.nf
src_w
Specifies the source window or None\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
If dest_w is None, XIWarpPointer moves the pointer by the
offsets (dest_x, dest_y) relative to the current position of
the pointer\&. If dest_w is a window, XIWarpPointer moves the
pointer to the offsets (dest_x, dest_y) relative to the origin
of dest_w\&. However, if src_w is a window, the move only takes
place if the window src_w contains the pointer and if the
specified rectangle of src_w contains the pointer\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The src_x and src_y coordinates are relative to the origin of
src_w\&. If src_height is zero, it is replaced with the current
height of src_w minus src_y\&. If src_width is zero, it is
replaced with the current width of src_w minus src_x\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
There is seldom any reason for calling this function\&. The
pointer should normally be left to the user\&. If you do use this
function, however, it generates events just as if the user had
instantaneously moved the pointer from one position to another\&.
Note that you cannot use XIWarpPointer to move the pointer
outside the confine_to window of an active pointer grab\&. An
attempt to do so will only move the pointer as far as the
closest edge of the confine_to window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIWarpPointer is identical to XWarpPointer but specifies the
device explicitly\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIWarpPointer can generate a BadDevice and a BadWindow error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
window\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XWarpPointer(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XChangeDeviceDontPropagateList.txt 0000664 0032045 0000764 00000006130 12110553734 017325 0000000 0000000 XCHANGEDEVICEDONTPROPAGATELIST(libmansuffix)
============================================
NAME
----
XChangeDeviceDontPropagateList, XGetDeviceDontPropagateList -
query or change the dont-propagate-list for extension devices
SYNOPSIS
--------
#include
int XChangeDeviceDontPropagateList( Display *display,
Window window,
int count,
XEventClass *event_list,
int mode);
XEventClass* XGetDeviceDontPropagateList( Display *display,
Window window,
int *count);
display
Specifies the connection to the X server.
window
Specifies the window whose dont-propagate-list is to be
queried or modified.
event_list
Specifies a pointer to a list of event classes.
mode
Specifies the mode.You can pass AddToList, or
DeleteFromList.
count
Specifies the number of event classes in the list.
DESCRIPTION
-----------
The XChangeDeviceDontPropagateList request modifies the list of
events that should not be propagated to ancestors of the event
window. This request allows extension events to be added to or
deleted from that list. By default, all events are propagated
to ancestor windows. Once modified, the list remains modified
for the life of the window. Events are not removed from the
list because the client that added them has terminated.
Suppression of event propagation is not allowed for all input
extension events. If a specified event class is one that cannot
be suppressed, a BadClass error will result. Events that can be
suppressed include DeviceKeyPress, DeviceKeyRelease,
DeviceButtonPress, DeviceButtonRelease, DeviceMotionNotify,
ProximityIn, and ProximityOut.
XChangeDeviceDontPropagateList can generate a BadDevice,
BadClass, or BadValue error.
The XGetDeviceDontPropagateList request queries the list of
events that should not be propagated to ancestors of the event
window.
XGetDeviceDontPropagateList can generate a BadClass or
BadWindow error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadWindow
An invalid window id was specified.
BadClass
An invalid event class was specified.
libXi-1.7.1.901/man/XGetFeedbackControl.txt 0000664 0032045 0000764 00000021670 12110553734 015167 0000000 0000000 XGETFEEDBACKCONTROL(libmansuffix)
=================================
NAME
----
XGetFeedbackControl, XChangeFeedbackControl - query and change
input device feedbacks
SYNOPSIS
--------
#include
XFeedbackState *XGetFeedbackControl( Display *display,
XDevice *device,
int *num_feedbacks);
int XChangeFeedbackControl( Display *display,
XDevice *device,
Mask mask,
XFeedbackControl *control);
display
Specifies the connection to the X server.
device
Specifies the device whose feedbacks are to be queried
or modified.
num_feedbacks
Specifies an address into which the number of feedbacks
supported by thedevice is to be returned.
mask
Specifies a mask specific to each type of feedback that
describes howthe feedback is to be modified.
control
Specifies the address of an XFeedbackControl structure
that containsthe new values for the feedback.
DESCRIPTION
-----------
These requests are provided to manipulate those input devices
that support feedbacks. A BadMatch error will be generated if
the requested device does not support feedbacks. Whether or not
a given device supports feedbacks can be determined by
examining the information returned by the XOpenDevice request.
For those devices that support feedbacks, XOpenDevice will
return an XInputClassInfo structure with the input_class field
equal to the constant FeedbackClass (defined in the file XI.h).
The XGetFeedbackControl request returns a pointer to a list of
XFeedbackState structures. Each item in this list describes one
of the feedbacks supported by the device. The items are
variable length, so each contains its length to allow traversal
to the next item in the list.
The feedback classes that are currently defined are:
KbdFeedbackClass, PtrFeedbackClass, StringFeedbackClass,
IntegerFeedbackClass, LedFeedbackClass, and BellFeedbackClass.
These constants are defined in the file XI.h. An input device
may support zero or more classes of feedback, and may support
multiple feedbacks of the same class. Each feedback contains a
class identifier and an id that is unique within that class for
that input device. The id is used to identify the feedback when
making an XChangeFeedbackControl request.
XGetFeedbackControl can generate a BadDevice or BadMatch error.
The XChangeFeedbackControl request modifies the values of one
feedback on the specified device. The feedback is identified by
the id field of the XFeedbackControl structure that is passed
with the request. The fields of the feedback that are to be
modified are identified by the bits of the mask that is passed
with the request.
XChangeFeedbackControl can generate a BadDevice, BadMatch, or
BadValue error.
Structures
~~~~~~~~~~
Each class of feedback is described by a structure specific to
that class. These structures are defined in the file XInput.h.
XFeedbackState and XFeedbackControl are generic structures that
contain three fields that are at the beginning of each class of
feedback:
typedef struct {
XID class;
int length;
XID id;
} XFeedbackState, XFeedbackControl;
The XKbdFeedbackState structure defines the attributes that are
returned for feedbacks equivalent to those on the X keyboard.
typedef struct {
XID class;
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int global_auto_repeat;
char auto_repeats[32];
} XKbdFeedbackState;
The XPtrFeedbackState structure defines the attributes that are
returned for feedbacks equivalent to those on the the X
pointer.
typedef struct {
XID class;
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackState;
The XIntegerFeedbackState structure defines attributes that are
returned for integer feedbacks.
typedef struct {
XID class;
int length;
XID id;
int resolution;
int minVal;
int maxVal;
} XIntegerFeedbackState;
The XStringFeedbackState structure defines the attributes that
are returned for string feedbacks.
typedef struct {
XID class;
int length;
XID id;
int max_symbols;
int num_syms_supported;
KeySym *syms_supported;
} XStringFeedbackState;
The XBellFeedbackState structure defines the attributes that
are returned for bell feedbacks.
typedef struct {
XID class;
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackState;
The XLedFeedbackState structure defines the attributes that are
returned for LED feedbacks.
typedef struct {
XID class;
int length;
XID id;
int led_values;
} XLedFeedbackState;
The XPrtFeedbackControl structure defines the attributes that
can be controlled for pointer feedbacks.
typedef struct {
XID class;
int length;
XID id;
int accelNum;
int accelDenom;
int threshold;
} XPtrFeedbackControl;
The XKbdFeedbackControl structure defines the attributes that
can be controlled for keyboard feedbacks.
typedef struct {
XID class;
int length;
XID id;
int click;
int percent;
int pitch;
int duration;
int led_mask;
int led_value;
int key;
int auto_repeat_mode;
} XKbdFeedbackControl;
The XStringFeedbackControl structure defines the attributes
that can be controlled for string feedbacks.
typedef struct {
XID class;
int length;
XID id;
int num_keysyms;
KeySym *syms_to_display;
} XStringFeedbackControl;
The XIntegerFeedbackControl structure defines the attributes
that can be controlled for integer feedbacks.
typedef struct {
XID class;
int length;
XID id;
int int_to_display;
} XIntegerFeedbackControl;
The XBellFeedbackControl structure defines the attributes that
can be controlled for bell feedbacks.
typedef struct {
XID class;
int length;
XID id;
int percent;
int pitch;
int duration;
} XBellFeedbackControl;
The XLedFeedbackControl structure defines the attributes that
can be controlled for LED feedbacks.
typedef struct {
XID class;
int length;
XID id;
int led_mask;
int led_values;
} XLedFeedbackControl;
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests.
BadMatch
This error may occur if an XGetFeedbackControl request
was made specifying a device that has no feedbacks, or
an XChangeFeedbackControl request was made with an
XFeedbackControl structure that contains an invalid
feedback type. It may also occur if an invalid
combination of mask bits is specified ( DvKey but no
DvAutoRepeatMode for keyboard feedbacks), or if an
invalid KeySym is specified for a string feedback.
BadValue
Some numeric value falls outside the range of values
accepted by the XChangeFeedbackControl request. Unless a
specific range is specified for an argument, the full
range defined by the argument's type is accepted. Any
argument defined as a set of alternatives can generate
this error.
libXi-1.7.1.901/man/XIGetProperty.man 0000664 0032045 0000764 00000000062 12116564660 014031 0000000 0000000 .so manlibmansuffix/XIChangeProperty.libmansuffix
libXi-1.7.1.901/man/XIBarrierReleasePointer.man 0000664 0032045 0000764 00000007117 12151551631 015776 0000000 0000000 '\" t
.\" Title: xibarrierreleasepointer
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1
.\" Date: 05/30/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIBARRIERRELEASEPOIN" "libmansuffix" "05/30/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIBarrierReleasePointer, XIBarrierReleasePointers \- allow pointer movement across a pointer barrier
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XIBarrierReleasePointer( Display *display,
int deviceid,
PointerBarrier barrier,
BarrierEventID eventid);
.fi
.sp
.nf
int XIBarrierReleasePointers( Display *display,
XIBarrierReleasePointerInfo *barriers,
int num_barriers);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
deviceid
Specifies the device allowed to move across the barrier\&.
.fi
.sp
.nf
barrier
Specifies the barrier\&.
.fi
.sp
.nf
eventid
Specifies the unique event ID for this barrier event sequence\&.
.fi
.sp
.nf
barriers
List of deviceid, barrier, eventid triplets\&.
.fi
.sp
.nf
num_barriers
Number of elements in barriers\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
If a pointer is constrained by a pointer barrier, release the pointer
from the barrier and allow it to cross the barrier with the next motion\&.
If the pointer moves away from the barrier, this request does nothing\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
This request only releases the pointer for the given barrier event
sequence\&. If the pointer moves away from or through the barrier, a
XI_BarrierLeave event is generated\&. Future pointer movement constrained
by this barrier will assign a new eventid and require a new
XIBarrierReleasePointer request\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the pointer is not currently blocked by the barrier or the barrier
event sequence has ended, this request does nothing\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIBarrierReleasePointer and XIBarrierReleasePointers can generate a
BadDevice or BadValue error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a master pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
A value for a PointerBarrier argument does not name a defined
pointer barrier\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XFixesCreatePointerBarrier(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIFreeDeviceInfo.man 0000664 0032045 0000764 00000000057 12116564654 014371 0000000 0000000 .so manlibmansuffix/XIQueryDevice.libmansuffix
libXi-1.7.1.901/man/XSelectExtensionEvent.man 0000664 0032045 0000764 00000014013 12116564646 015557 0000000 0000000 '\" t
.\" Title: xselectextensionevent
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XSELECTEXTENSIONEVEN" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XSelectExtensionEvent, XGetSelectedExtensionEvents \- select extension events, get the list of currently selected extension events
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XSelectExtensionEvent( Display *display,
Window w,
XEventClass *event_list,
int event_count);
.fi
.sp
.nf
XGetSelectedExtensionEvents( Display *display,
Window w,
int *this_client_event_count_return,
XEventClass **this_client_event_list_return,
int *all_clients_event_count_return,
XEventClass **all_clients_event_list_return);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
w
Specifies the window whose events you are interested in\&.
.fi
.sp
.nf
event_list
Specifies the list of event classes that describe the
events you are interested in\&.
.fi
.sp
.nf
event_count
Specifies the count of event classes in the event list\&.
.fi
.sp
.nf
this_client_event_count_return
Returns the count of event classes selected by this
client\&.
.fi
.sp
.nf
this_client_event_list_return
Returns a pointer to the list of event classes selected
by this client\&.
.fi
.sp
.nf
all_clients_event_count_return
Returns the count of event classes selected by all
clients\&.
.fi
.sp
.nf
all_clients_event_list_return
Returns a pointer to the list of event classes selected
by all clients\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XSelectExtensionEvent request causes the X server to report
the events associated with the specified list of event classes\&.
Initially, X will not report any of these events\&. Events are
reported relative to a window\&. If a window is not interested in
a device event, it usually propagates to the closest ancestor
that is interested, unless the do_not_propagate mask prohibits
it\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Multiple clients can select for the same events on the same
window with the following restrictions:
* Multiple clients can select events on the same window
because their event masks are disjoint\&. When the X server
generates an event, it reports it to all interested
clients\&.
* Only one client at a time can select a DeviceButtonPress
event with automatic passive grabbing enabled, which is
associated with the event class DeviceButtonPressGrab\&. To
receive DeviceButtonPress events without automatic passive
grabbing, use event class DeviceButtonPress but do not
specify event class DeviceButtonPressGrab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The server reports the event to all interested clients\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Information contained in the XDevice structure returned by
XOpenDevice is used by macros to obtain the event classes that
clients use in making XSelectExtensionEvent requests\&. Currently
defined macros include DeviceKeyPress, DeviceKeyRelease,
DeviceButtonPress, DeviceButtonRelese, DeviceMotionNotify,
DeviceFocusIn, DeviceFocusOut, ProximityIn, ProximityOut,
DeviceStateNotify, DeviceMappingNotify, ChangeDeviceNotify,
DevicePointerMotionHint, DeviceButton1Motion,
DeviceButton2Motion, DeviceButton3Motion, DeviceButton4Motion,
DeviceButton5Motion, DeviceButtonMotion, DeviceOwnerGrabButton,
DeviceButtonPressGrab, and NoExtensionEvent\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
To obtain the proper event class for a particular device, one
of the above macros is invoked using the XDevice structure for
that device\&. For example,
DeviceKeyPress (*device, type, eventclass);
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
returns the DeviceKeyPress event type and the eventclass for
selecting DeviceKeyPress events from this device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XSelectExtensionEvent can generate a BadWindow or BadClass
error\&. The XGetSelectedExtensionEvents request reports the
extension events selected by this client and all clients for
the specified window\&. This request returns pointers to two
XEventClass arrays\&. One lists the input extension events
selected by this client from the specified window\&. The other
lists the event classes selected by all clients from the
specified window\&. You should use XFree to free these two
arrays\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetSelectedExtensionEvents can generate a BadWindow error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadClass
A value for an XEventClass is invalid\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIQueryPointer.txt 0000664 0032045 0000764 00000005563 12110553734 014264 0000000 0000000 XIQUERYPOINTER(libmansuffix)
============================
NAME
----
XIQueryPointer - get device pointer coordinates.
SYNOPSIS
--------
#include
Bool XIQueryPointer( Display *display,
int deviceid,
Window win,
Window *root_return,
Window *child_return,
double *root_x_return,
double *root_y_return,
double *win_x_return,
double *win_y_return,
XIButtonState *buttons_return,
XIModifierState *modifiers_return,
XIGroupState *group_return);
buttons_return
Returns the current button state.
child_return
Returns the child window that the pointer is located in,
if any.
deviceid
Specifies the device to query.
display
Specifies the connection to the X server.
group_return
Returns the current group state.
modifiers_return
Returns the current state of the modifier keys.
root_return
Returns the root window that the pointer is in.
root_x_return, root_y_return
Return the pointer coordinates relative to the root
window's origin.
win
Specifies the window.
win_x_return, win_y_return
Return the pointer coordinates relative to the specified
window.
DESCRIPTION
-----------
The XIQueryPointer function returns the root window the
device's pointer is logically on and the pointer coordinates
relative to the root window's origin. If XIQueryPointer returns
False, the pointer is not on the same screen as the specified
window, and XIQueryPointer returns None to child_return and
zero to win_x_return and win_y_return. If XIQueryPointer
returns True, the pointer coordinates returned to win_x_return
and win_y_return are relative to the origin of the specified
window. In this case, XIQueryPointer returns the child that
contains the pointer, if any, or else None to child_return.
XIQueryPointer returns the current logical state of the buttons
buttons_return. The keyboard paired with the master pointer is
selected to obtain the data for modifiers_return and
group_return.
The mask field in buttons_return is dynamically allocated and
must be freed by the caller.
XIQueryPointer is identical to XQueryPointer but specifies the
device explicitly.
XIQueryPointer can generate a BadDevice and a BadWindow error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The device does not
exist or is not a pointer device.
BadWindow
A value for a Window argument does not name a defined
window.
SEE ALSO
--------
XQueryPointer(libmansuffix)
libXi-1.7.1.901/man/XChangeKeyboardDevice.man 0000664 0032045 0000764 00000007037 12116564637 015437 0000000 0000000 '\" t
.\" Title: xchangekeyboarddevice
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XCHANGEKEYBOARDDEVIC" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XChangeKeyboardDevice \- change which device is used as the X keyboard
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XChangeKeyboardDevice( Display *display,
XDevice *device);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device to be used as the X keyboard\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XChangeKeyboardDevice request causes the server to use the
specified device as the X keyboard\&. The device must have been
previously opened by the requesting client via XOpenDevice or a
BadDevice error will result\&. The device must support input
class Keys, or a BadMatch error will result\&. If the server
implementation does not support using the requested device as
the X keyboard, a BadDevice error will result\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the specified device is grabbed by another client,
AlreadyGrabbed is returned\&. If the specified device is frozen
by a grab on another device, GrabFrozen is returned\&. If the
request is successful, Success is returned\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the request succeeds, a ChangeDeviceNotify event is sent to
all clients that have selected that event\&. A MappingNotify
event with request = MappingKeyboard is sent to all clients\&.
The specified device becomes the X keyboard and the old X
keyboard becomes accessible through the input extension
protocol requests\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeKeyboardDevice can generate a BadDevice or a BadMatch
error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist, has not been opened by this client via
XOpenInputDevice, or is already one of the core X device
(pointer or keyboard)\&. This error may also occur if the
server implementation does not support using the
specified device as the X keyboard\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XChangeKeyboardDevice request
was made specifying a device that has no keys\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XChangePointerDevice(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGetDeviceModifierMapping.man 0000664 0032045 0000764 00000013414 12116564641 016272 0000000 0000000 '\" t
.\" Title: xgetdevicemodifiermapping
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGETDEVICEMODIFIERMA" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGetDeviceModifierMapping, XSetDeviceModifierMapping \- query or change device modifier mappings
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XSetDeviceModifierMapping( Display *display,
XDevice *device,
XModifierKeymap *modmap);
.fi
.sp
.nf
XModifierKeymap *XGetDeviceModifierMapping( Display *display,
XDevice *device);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose modifier mapping is to be
queried or modified\&.
.fi
.sp
.nf
modmap
Specifies a pointer to the XModifierKeymap structure\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XSetDeviceModifierMapping request specifies the KeyCodes of
the keys (if any) that are to be used as modifiers for the
specified device\&. If it succeeds, the X server generates a
DeviceMappingNotify event, and XSetDeviceModifierMapping
returns MappingSuccess\&. X permits at most eight modifier keys\&.
If more than eight are specified in the XModifierKeymap
structure, a BadLength error results\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The modifiermap member of the XModifierKeymap structure
contains eight sets of max_keypermod KeyCodes, one for each
modifier in the order Shift, Lock, Control, Mod1, Mod2, Mod3,
Mod4, and Mod5\&. Only nonzero KeyCodes have meaning in each set,
and zero KeyCodes are ignored\&. In addition, all of the nonzero
KeyCodes must be in the range specified by min_keycode and
max_keycode as returned by XListInputDevices, or a BadValue
error results\&. No KeyCode may appear twice in the entire map,
or a BadValue error results\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
An X server can impose restrictions on how modifiers can be
changed, for example, if certain keys do not generate up
transitions in hardware, if auto\-repeat cannot be disabled on
certain keys, or if multiple modifier keys are not supported\&.
If some such restriction is violated, the status reply is
MappingFailed, and none of the modifiers are changed\&. If the
new KeyCodes specified for a modifier differ from those
currently defined and any (current or new) keys for that
modifier are in the logically down state,
XSetDeviceModifierMapping returns MappingBusy, and none of the
modifiers is changed\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XSetDeviceModifierMapping can generate BadLength, BadDevice,
BadMatch, BadAlloc, and BadValue errors\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetDeviceModifierMapping request returns a pointer to a
newly created XModifierKeymap structure that contains the keys
being used as modifiers\&. The structure should be freed after
use by calling XFreeModifierMapping \&. If only zero values
appear in the set for any modifier, that modifier is disabled\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetDeviceModifierMapping can generate BadDevice and BadMatch
errors\&.
.fi
.if n \{\
.RE
.\}
.sp
Structures
.sp
.if n \{\
.RS 4
.\}
.nf
The XModifierKeymap structure contains:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
int max_keypermod;
KeyCode *modifiermap;
} XModifierKeymap;
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadLength
More than eight keys were specified in the
XModifierKeymap structure\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadAlloc
The server failed to allocate the requested resource or
server memory\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGetDeviceModifierMapping or
XChangeDeviceModifierMapping request was made specifying
a device that has no keys\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XSetDeviceKeyMapping(libmansuffix), XSetDeviceButtonMapping(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGrabDevice.man 0000664 0032045 0000764 00000017230 12116564644 013436 0000000 0000000 '\" t
.\" Title: xgrabdevice
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGRABDEVICE" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGrabDevice, XUngrabDevice \- grab/release the specified extension device
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XGrabDevice( Display *display,
XDevice* device,
Window grab_window,
Bool owner_events,
int event_count,
XEventClass *event_list,
int this_device_mode,
int other_devices_mode,
Time time);
.fi
.sp
.nf
int XUngrabDevice( Display *display,
XDevice *device,
Time time);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device to be grabbed or released\&.
.fi
.sp
.nf
grab_window
Specifies the id of a window to be associated with the
device\&.
.fi
.sp
.nf
owner_events
Specifies a Boolean value that indicates whether
theevents from the deviceare to be reported as usual or
reported with respect to the grab windowif selected by
the event list\&.
.fi
.sp
.nf
event_count
Specifies the number of elements in the event_list
array\&.
.fi
.sp
.nf
event_list
Specifies a pointer to a list of event classes that
indicates which eventsthe client wishes to receive\&.
These event classes must have beenobtained specifying
the device being grabbed\&.
.fi
.sp
.nf
this_device_mode
Specifies further processing of events from this
device\&.You can pass GrabModeSyncor GrabModeAsync\&.
.fi
.sp
.nf
other_devices_mode
Specifies further processing of events from other
devices\&.You can pass GrabModeSyncor GrabModeAsync\&.
.fi
.sp
.nf
time
Specifies the time\&.You can pass either a timestamp or
CurrentTime\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XGrabDevice request actively grabs control of the device
and generates DeviceFocusIn and DeviceFocusOut events\&. Further
device events are reported only to the grabbing
client\&.XGrabDevice overrides any active device grab by this
client\&. event_list is a pointer to a list of event classes\&.
This list indicates which events the client wishes to receive
while the grab is active\&. If owner_events is False, all
generated device events are reported with respect to
grab_window if selected\&. If owner_events is True and if a
generated device event would normally be reported to this
client, it is reported normally; otherwise, the event is
reported with respect to the grab_window, and is only reported
if specified in the event_list\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the this_device_mode argument is GrabModeAsync, device event
processing continues as usual\&. If the device is currently
frozen by this client, then processing of device events is
resumed\&. If the this_device_mode argument is GrabModeSync, the
state of the device (as seen by client applications) appears to
freeze, and the X server generates no further device events
until the grabbing client issues a releasing XAllowDeviceEvents
call or until the device grab is released\&. Actual device
changes are not lost while the device is frozen; they are
simply queued in the server for later processing\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If other_devices_mode is GrabModeAsync, processing of events
from other devices is unaffected by activation of the grab\&. If
other_devices_mode is GrabModeSync, the state of all devices
except the grabbed device (as seen by client applications)
appears to freeze, and the X server generates no further events
from those devices until the grabbing client issues a releasing
XAllowDeviceEvents call or until the device grab is released\&.
Actual events are not lost while the devices are frozen; they
are simply queued in the server for later processing\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the device is actively grabbed by some other client,
XGrabDevice fails and returns AlreadyGrabbed\&. If grab_window is
not viewable, it fails and returns GrabNotViewable\&. If the
device is frozen by an active grab of another client, it fails
and returns GrabFrozen\&. If the specified time is earlier than
the last\-device\-grab time or later than the current X server
time, it fails and returns GrabInvalidTime\&. Otherwise, the
last\-device\-grab time is set to the specified time (
CurrentTime is replaced by the current X server time)\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If a grabbed device is closed by a client while an active grab
by that client is in effect, the active grab is released\&. If
the device is frozen only by an active grab of the requesting
client, it is thawed\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGrabDevice can generate BadClass, BadDevice, BadValue, and
BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XUngrabDevice request releases the device and any queued
events if this client has it actively grabbed from either
XGrabDevice or XGrabDeviceKey\&. If other devices are frozen by
the grab, XUngrabDevice thaws them\&.XUngrabDevice does not
release the device and any queued events if the specified time
is earlier than the last\-device\-grab time or is later than the
current X server time\&. It also generates DeviceFocusIn and
DeviceFocusOut events\&. The X server automatically performs an
UngrabDevice request if the event window for an active device
grab becomes not viewable\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XUngrabDevice can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XAllowDeviceEvents(libmansuffix), XGrabDeviceButton(libmansuffix), XGrabDeviceKey(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGetDeviceMotionEvents.txt 0000664 0032045 0000764 00000007443 12110553734 015716 0000000 0000000 XGETDEVICEMOTIONEVENTS(libmansuffix)
====================================
NAME
----
XGetDeviceMotionEvents, XDeviceTimeCoord - get device motion
history
SYNOPSIS
--------
#include
XDeviceTimeCoord *XGetDeviceMotionEvents( Display *display,
XDevice *device,
Time start,
Time stop,
int *nevents_return,
int *mode_return,
int *axis_count_return);
display
Specifies the connection to the X server.
device
Specifies the device whose motion history is to be
queried.
start, stop
Specify the time interval in which the events are
returned from the motionhistory buffer.You can pass a
timestamp or CurrentTime.
nevents_return
Returns the number of events from the motion history
buffer.
mode_return
Returns the mode of the device (Absolute or Relative).
axis_count_return
Returns the count of axes being reported.
DESCRIPTION
-----------
The server may retain the recent history of the device motion
and do so to a finer granularity than is reported by
DeviceMotionNotify events. The XGetDeviceMotionEvents request
makes this history available.
The XGetDeviceMotionEvents request returns all events in the
motion history buffer that fall between the specified start and
stop times, inclusive. If the start time is later than the stop
time or if the start time is in the future, no events are
returned. If the stop time is in the future, it is equivalent
to specifying CurrentTime.
The mode indicates whether the device is reporting absolute
positional data (mode = Absolute ) or relative motion data
(mode = Relative ). Some devices allow their mode to be changed
via the XSetDeviceMode request. These constants are defined in
the file XI.h. The axis_count returns the number of axes or
valuators being reported by the device.
XGetDeviceMotionEvents can generate a BadDevice, or BadMatch
error.
Structures
The XDeviceTimeCoord structure contains:
typedef struct {
Time time;
int *data;
} XDeviceTimeCoord;
The time member is set to the time, in milliseconds. The data
member is a pointer to an array of integers. These integers are
set to the values of each valuator or axis reported by the
device. There is one element in the array per axis of motion
reported by the device. The value of the array elements depends
on the mode of the device. If the mode is Absolute, the values
are the raw values generated by the device. These may be scaled
by client programs using the maximum values that the device can
generate. The maximum value for each axis of the device is
reported in the max_val field of the XAxisInfo returned by the
XListInputDevices request. If the mode is Relative, the data
values are the relative values generated by the device.
You should use XFreeDeviceMotionEvents to free the data
returned by this request.
Errors returned by this request: BadDevice, BadMatch.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadMatch
This error may occur if an XGetDeviceMotionEvents
request is made specifying a device that has no
valuators and reports no axes of motion.
libXi-1.7.1.901/man/XUngrabDeviceKey.man 0000664 0032045 0000764 00000000060 12116564644 014443 0000000 0000000 .so manlibmansuffix/XGrabDeviceKey.libmansuffix
libXi-1.7.1.901/man/XIListProperties.man 0000664 0032045 0000764 00000004456 12116564660 014550 0000000 0000000 '\" t
.\" Title: xilistproperties
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XILISTPROPERTIES" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIListProperties \- List a device\*(Aqs properties\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Atom* XListProperties( Display *display,
int deviceid,
int *nprops_return);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
deviceid
The device to list the properties for\&.
.fi
.sp
.nf
nprops_return
Specifies the number of Atoms returned\&.
.fi
.SH "DESCRIPTION"
.sp
The XIListProperties function returns a list of the properties associated with the input device specified with deviceid\&. Each device may have an arbitrary number of properties attached, some of which were created by the driver and/or server, others created by clients at runtime\&.
.sp
The client is expected to free the list of properties using XFree\&.
.sp
XIListProperties can generate a BadDevice error\&.
.SH "DIAGNOSTICS"
.sp
BadDevice An invalid device was specified\&. The device does not exist\&.
.SH "SEE ALSO"
.sp
XIChangeProperty(libmansuffix), XIGetProperty(libmansuffix), XIDeleteProperty(libmansuffix)
libXi-1.7.1.901/man/XSendExtensionEvent.man 0000664 0032045 0000764 00000013270 12116564650 015230 0000000 0000000 '\" t
.\" Title: xsendextensionevent
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XSENDEXTENSIONEVENT" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XSendExtensionEvent \- send input extension events to a client
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XSendExtensionEvent( Display *display,
XDevice *device,
Window destination,
Bool propagate,
int event_count,
XEventClass *event_list,
XEvent *event_send);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device from which the events are to be
sent\&.
.fi
.sp
.nf
destination
Specifies the window the event is to be sent to\&. You can
pass window id, PointerWindow,or InputFocus\&.
.fi
.sp
.nf
propagate
Specifies a Boolean value that is either True or False\&.
.fi
.sp
.nf
event_count
Specifies the count of XEventClasses in event_list\&.
.fi
.sp
.nf
event_list
Specifies the list of event selections to be used\&.
.fi
.sp
.nf
event_send
Specifies a pointer to the event that is to be sent\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XSendExtensionEvent request identifies the destination
window, determines which clients should receive the specified
events, and ignores any active grabs\&. This request requires you
to pass an event class list\&. For a discussion of the valid
event class names, see XOpenDevice(libmansuffix) This
request uses the w argument to identify the destination window
as follows:
* If w is PointerWindow,the destination window is the window
that contains the pointer\&.
* If w is InputFocusand if the focus window contains the
pointer,the destination window is the window that contains
the pointer; otherwise, the destination window is the focus
window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
To determine which clients should receive the specified events,
XSendExtensionEventuses the propagate argument as follows:
* If event_list is the empty set,the event is sent to the
client that created the destination window\&. If that client
no longer exists,no event is sent\&.
* If propagate is False,the event is sent to every client
selecting on destination any of the eventtypes specified by
the event_list array\&.
* If propagate is Trueand no clients have selected on
destination any ofthe events specified by the event_list
array,the destination is replaced with theclosest ancestor
of destination for which some client has selected atype
specified by the event\-list array and for which no
interveningwindow has that type in
itsdo\-not\-propagate\-mask\&. If no such window exists or if
the window isan ancestor of the focus window and
InputFocuswas originally specifiedas the destination, the
event is not sent to any clients\&. Otherwise, the event is
reported to every client selecting on the finaldestination
any of the events specified in the event_list array\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The event in the XEventstructure must be one of the events
defined by the input extension (or a BadValueerror results) so
that the X server can correctly byte\-swapthe contents as
necessary\&. The contents of the event areotherwise unaltered and
unchecked by the X server except to force send_event to Truein
the forwarded event and to set the serial number in the event
correctly\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XSendExtensionEventreturns zero if the conversion to wire
protocol format failedand returns nonzero
otherwise\&.XSendExtensionEventcan generate BadClass, BadDevice,
BadValue, and BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
window\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGetDeviceDontPropagateList.man 0000664 0032045 0000764 00000000100 12116564637 016614 0000000 0000000 .so manlibmansuffix/XChangeDeviceDontPropagateList.libmansuffix
libXi-1.7.1.901/man/XIUngrabDevice.man 0000664 0032045 0000764 00000000056 12116564654 014111 0000000 0000000 .so manlibmansuffix/XIGrabDevice.libmansuffix
libXi-1.7.1.901/man/Makefile.am 0000664 0032045 0000764 00000014673 12150513475 012654 0000000 0000000 #
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
#
# 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 (including the next
# paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
#
libmandir = $(LIB_MAN_DIR)
# Source files for X Input v2 man pages
XI2_txt = \
XIBarrierReleasePointer.txt \
XIChangeHierarchy.txt \
XIDefineCursor.txt \
XIGrabButton.txt \
XIGrabDevice.txt \
XIGrabEnter.txt \
XIQueryDevice.txt \
XIQueryPointer.txt \
XIQueryVersion.txt \
XISelectEvents.txt \
XISetClientPointer.txt \
XISetFocus.txt \
XIWarpPointer.txt \
XIListProperties.txt \
XIChangeProperty.txt
# Source files for X Input v1 man pages
libman_txt = \
XAllowDeviceEvents.txt \
XChangeDeviceDontPropagateList.txt \
XChangeKeyboardDevice.txt \
XChangePointerDevice.txt \
XDeviceBell.txt \
XGetDeviceControl.txt \
XGetDeviceKeyMapping.txt \
XGetDeviceModifierMapping.txt \
XGetDeviceMotionEvents.txt \
XGetDeviceProperty.txt \
XGetExtensionVersion.txt \
XGetFeedbackControl.txt \
XGrabDeviceButton.txt \
XGrabDeviceKey.txt \
XGrabDevice.txt \
XListDeviceProperties.txt \
XListInputDevices.txt \
XOpenDevice.txt \
XQueryDeviceState.txt \
XSelectExtensionEvent.txt \
XSendExtensionEvent.txt \
XSetDeviceButtonMapping.txt \
XSetDeviceFocus.txt \
XSetDeviceMode.txt \
XSetDeviceValuators.txt \
$(XI2_txt)
# Name of DocBook XML files generated from .txt files by asciidoc
libman_xml = $(libman_txt:.txt=.xml)
# Shadow man pages are simply links to a main man page.
# They are created by the xmlto command when generating man pages from DocBook
# The shadow man page contains a gtroff .so request to include the main man page
XI2_shadows = \
XIBarrierReleasePointers.man \
XIUndefineCursor.man \
XIUngrabButton.man \
XIGrabKeycode.man \
XIUngrabKeycode.man \
XIUngrabDevice.man \
XIUngrabEnter.man \
XIGrabFocusIn.man \
XIUngrabFocusIn.man \
XIGetClientPointer.man \
XIGetFocus.man \
XIGetSelectedEvents.man \
XIDeleteProperty.man \
XIGetProperty.man \
XIFreeDeviceInfo.man \
XIGrabTouchBegin.man \
XIUngrabTouchBegin.man
libman_shadows = \
XGetDeviceDontPropagateList.man \
XChangeDeviceControl.man \
XChangeDeviceKeyMapping.man \
XSetDeviceModifierMapping.man \
XChangeFeedbackControl.man \
XUngrabDeviceButton.man \
XUngrabDeviceKey.man \
XUngrabDevice.man \
XDeviceTimeCoord.man \
XFreeDeviceList.man \
XCloseDevice.man \
XGetSelectedExtensionEvents.man \
XGetDeviceButtonMapping.man \
XGetDeviceFocus.man \
XChangeDeviceProperty.man \
XDeleteDeviceProperty.man \
$(XI2_shadows)
# Name of man page files generated from DocBook XML files by xmlto
libman_PRE = $(libman_txt:.txt=.man) $(libman_shadows)
if INSTALL_MANPAGES
libman_DATA = $(libman_PRE:.man=.$(LIB_MAN_SUFFIX))
endif
EXTRA_DIST = $(libman_txt) $(libman_PRE)
CLEANFILES = $(libman_DATA) *.libmansuffix
MAINTAINERCLEANFILES = $(libman_PRE) *.xml
# Dependencies for X Input v1 shadow pages
XGetDeviceDontPropagateList.man: XChangeDeviceDontPropagateList.man
XChangeDeviceControl.man: XGetDeviceControl.man
XChangeDeviceKeyMapping.man: XGetDeviceKeyMapping.man
XSetDeviceModifierMapping.man: XGetDeviceModifierMapping.man
XDeviceTimeCoord.man: XGetDeviceMotionEvents.man
XChangeFeedbackControl.man: XGetFeedbackControl.man
XUngrabDeviceButton.man: XGrabDeviceButton.man
XUngrabDeviceKey.man: XGrabDeviceKey.man
XUngrabDevice.man: XGrabDevice.man
XFreeDeviceList.man: XListInputDevices.man
XCloseDevice.man: XOpenDevice.man
XGetSelectedExtensionEvents.man: XSelectExtensionEvent.man
XGetDeviceButtonMapping.man: XSetDeviceButtonMapping.man
XGetDeviceFocus.man: XSetDeviceFocus.man
XChangeDeviceProperty.man: XGetDeviceProperty.man
XDeleteDeviceProperty.man: XGetDeviceProperty.man
# Dependencies for X Input v2 shadow pages
XIUndefineCursor.man: XIDefineCursor.man
XIUngrabButton.man XIGrabKeycode.man XIUngrabKeycode.man XIGrabTouchBegin.man XIUngrabTouchBegin.man: XIGrabButton.man
XIGetClientPointer.man: XISetClientPointer.man
XIGetFocus.man: XISetFocus.man
XIUngrabDevice.man: XIGrabDevice.man
XIGetProperty.man: XIChangeProperty.man
XIDeleteProperty.man: XIChangeProperty.man
XIUngrabEnter.man XIGrabFocusIn.man XIUngrabFocusIn.man: XIGrabEnter.man
XIGetSelectedEvents.man: XISelectEvents.man
XIFreeDeviceInfo.man: XIQueryDevice.man
XIBarrierReleasePointers.man: XIBarrierReleasePointer.man
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
# Unable to use __libmansuffix__ as underscores are lost in txt --> xml conversion
MAN_SUBSTS += -e 's/libmansuffix/$(LIB_MAN_SUFFIX)/g'
# asciidoc is generating [FIXME...] values in the .TH line we should fix.
MAN_SUBSTS += -e 's/\[FIXME: source\]/$(XORG_MAN_PAGE)/'
MAN_SUBSTS += -e 's/\[FIXME: manual\]/XINPUT FUNCTIONS/'
# asciidoc generates shadow page references without the man section directory
MAN_SUBSTS += -e 's/^\.so X/.so man$(LIB_MAN_SUFFIX)\/X/'
SUFFIXES = .man .$(LIB_MAN_SUFFIX)
.man.$(LIB_MAN_SUFFIX):
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
# Generate man pages and shadow pages from .txt and then from DocBook XML
if HAVE_DOCTOOLS
SUFFIXES += .txt .xml
.txt.xml:
$(AM_V_GEN)$(ASCIIDOC) -b docbook -d manpage -o $@ $<
.xml.man:
$(AM_V_GEN)$(XMLTO) man $<
$(AM_V_at)mv -f $(@:.man=.libmansuffix) $@
# Invoke asciidoc/xmlto main man page generation for shadow pages
$(libman_shadows):
@if test ! -f $(@:.man=.libmansuffix); then \
rm -f $<; \
$(MAKE) $(AM_MAKEFLAGS) $< || exit 1; \
fi
$(AM_V_at)mv -f $(@:.man=.libmansuffix) $@
endif
libXi-1.7.1.901/man/XSelectExtensionEvent.txt 0000664 0032045 0000764 00000010762 12110553734 015620 0000000 0000000 XSELECTEXTENSIONEVENT(libmansuffix)
===================================
NAME
----
XSelectExtensionEvent, XGetSelectedExtensionEvents - select
extension events, get the list of currently selected extension
events
SYNOPSIS
--------
#include
XSelectExtensionEvent( Display *display,
Window w,
XEventClass *event_list,
int event_count);
XGetSelectedExtensionEvents( Display *display,
Window w,
int *this_client_event_count_return,
XEventClass **this_client_event_list_return,
int *all_clients_event_count_return,
XEventClass **all_clients_event_list_return);
display
Specifies the connection to the X server.
w
Specifies the window whose events you are interested in.
event_list
Specifies the list of event classes that describe the
events you are interested in.
event_count
Specifies the count of event classes in the event list.
this_client_event_count_return
Returns the count of event classes selected by this
client.
this_client_event_list_return
Returns a pointer to the list of event classes selected
by this client.
all_clients_event_count_return
Returns the count of event classes selected by all
clients.
all_clients_event_list_return
Returns a pointer to the list of event classes selected
by all clients.
DESCRIPTION
-----------
The XSelectExtensionEvent request causes the X server to report
the events associated with the specified list of event classes.
Initially, X will not report any of these events. Events are
reported relative to a window. If a window is not interested in
a device event, it usually propagates to the closest ancestor
that is interested, unless the do_not_propagate mask prohibits
it.
Multiple clients can select for the same events on the same
window with the following restrictions:
* Multiple clients can select events on the same window
because their event masks are disjoint. When the X server
generates an event, it reports it to all interested
clients.
* Only one client at a time can select a DeviceButtonPress
event with automatic passive grabbing enabled, which is
associated with the event class DeviceButtonPressGrab. To
receive DeviceButtonPress events without automatic passive
grabbing, use event class DeviceButtonPress but do not
specify event class DeviceButtonPressGrab.
The server reports the event to all interested clients.
Information contained in the XDevice structure returned by
XOpenDevice is used by macros to obtain the event classes that
clients use in making XSelectExtensionEvent requests. Currently
defined macros include DeviceKeyPress, DeviceKeyRelease,
DeviceButtonPress, DeviceButtonRelese, DeviceMotionNotify,
DeviceFocusIn, DeviceFocusOut, ProximityIn, ProximityOut,
DeviceStateNotify, DeviceMappingNotify, ChangeDeviceNotify,
DevicePointerMotionHint, DeviceButton1Motion,
DeviceButton2Motion, DeviceButton3Motion, DeviceButton4Motion,
DeviceButton5Motion, DeviceButtonMotion, DeviceOwnerGrabButton,
DeviceButtonPressGrab, and NoExtensionEvent.
To obtain the proper event class for a particular device, one
of the above macros is invoked using the XDevice structure for
that device. For example,
DeviceKeyPress (*device, type, eventclass);
returns the DeviceKeyPress event type and the eventclass for
selecting DeviceKeyPress events from this device.
XSelectExtensionEvent can generate a BadWindow or BadClass
error. The XGetSelectedExtensionEvents request reports the
extension events selected by this client and all clients for
the specified window. This request returns pointers to two
XEventClass arrays. One lists the input extension events
selected by this client from the specified window. The other
lists the event classes selected by all clients from the
specified window. You should use XFree to free these two
arrays.
XGetSelectedExtensionEvents can generate a BadWindow error.
DIAGNOSTICS
-----------
BadWindow
A value for a Window argument does not name a defined
window.
BadClass
A value for an XEventClass is invalid.
libXi-1.7.1.901/man/XGetDeviceControl.txt 0000664 0032045 0000764 00000010333 12110553734 014674 0000000 0000000 XGETDEVICECONTROL(libmansuffix)
===============================
NAME
----
XGetDeviceControl, XChangeDeviceControl - query and change
input device controls
SYNOPSIS
--------
#include
XDeviceControl *XGetDeviceControl( Display *display,
XDevice *device,
int *controlType);
int XChangeDeviceControl( Display *display,
XDevice *device,
int controlType,
XDeviceControl *control);
display
Specifies the connection to the X server.
device
Specifies the device whose control is to be interrogated
or modified.
controlType
Specifies the type of control to be interrogated or
changed.
control
Specifies the address of an XDeviceControl structure
that contains the new values for the Device.
DESCRIPTION
-----------
These requests are provided to manipulate those input devices
that support device control. A BadMatch error will be generated
if the requested device does not support any device controls.
Valid device control types that can be used with these requests
include the following:
DEVICE_RESOLUTION: Queries or changes the resolution of
valuators on input devices.
The XGetDeviceControl request returns a pointer to an
XDeviceControl structure.
XGetDeviceControl can generate a BadDevice or BadMatch error.
The XChangeDeviceControl request modifies the values of one
control on the specified device. The control is identified by
the id field of the XDeviceControl structure that is passed
with the request.
XChangeDeviceControl can generate a BadDevice, BadMatch, or
BadValue error.
STRUCTURES
----------
Each control is described by a structure specific to that control.
These structures are defined in the file XInput.h.
XDeviceControl is a generic structure that contains two fields
that are at the beginning of each class of control:
typedef struct {
XID class;
int length;
} XDeviceControl;
The XDeviceResolutionState structure defines the information
that is returned for device resolution for devices with
valuators.
typedef struct {
XID control;
int length;
int num_valuators;
int* resolutions;
int* min_resolutions;
int* max_resolutions;
} XDeviceResolutionState;
The XDeviceResolutionControl structure defines the attributes
that can be controlled for keyboard Devices.
typedef struct {
XID control;
int length;
int first_valuator;
int num_valuators;
int* resolutions;
} XDeviceResolutionControl;
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests.
BadMatch
This error may occur if an XGetDeviceControl request was
made specifying a device that has no controls or an
XChangeDeviceControl request was made with an
XDeviceControl structure that contains an invalid Device
type. It may also occur if an invalid combination of
mask bits is specified ( DvKey but no DvAutoRepeatMode
for keyboard Devices), or if an invalid KeySym is
specified for a string Device.
BadValue
Some numeric value falls outside the range of values
accepted by the XChangeDeviceControl request. Unless a
specific range is specified for an argument, the full
range defined by the argument's type is accepted. Any
argument defined as a set of alternatives can generate
this error.
libXi-1.7.1.901/man/XSetDeviceFocus.txt 0000664 0032045 0000764 00000012733 12110553734 014355 0000000 0000000 XSETDEVICEFOCUS(libmansuffix)
=============================
NAME
----
XSetDeviceFocus, XGetDeviceFocus - control extension input
device focus
SYNOPSIS
--------
#include
XSetDeviceFocus( Display *display,
XDevice *device,
Window focus,
int revert_to,
Time time);
XGetDeviceFocus( Display *display,
XDevice *device,
Window *focus_return,
int *revert_to_return,
int * time_return);
Arguments
display
Specifies the connection to the X server.
device
Specifies the device whose focus is to be queried or
changed.
focus
Specifies the window, PointerRoot, FollowKeyboard,or
None.
focus_return
Returns the focus window, PointerRoot, FollowKeyboard,or
None.
revert_to
Specifies where the input focus reverts to if the window
becomes notviewable.You can pass RevertToParent,
RevertToPointerRoot, RevertToFollowKeyboard,or
RevertToNone.
revert_to_return
Returns the current focus state RevertToParent,
RevertToPointerRoot, RevertToFollowKeyboard,or
RevertToNone.
time_return
Returns the last_focus_time for the device.
time
Specifies the time.You can pass either a timestamp or
CurrentTime.
DESCRIPTION
-----------
The XSetDeviceFocus request changes the focus of the specified
device and its last-focus-change time. It has no effect if the
specified time is earlier than the current last-focus-change
time or is later than the current X server time. Otherwise, the
last-focus-change time is set to the specified time CurrentTime
is replaced by the current X server time). XSetDeviceFocus
causes the X server to generate DeviceFocusIn and
DeviceFocusOut events.
Depending on the focus argument, the following occurs:
* If focus is None , all device events are discarded until a
new focus window is set, and the revert_to argument is
ignored.
* If focus is a window, it becomes the device's focus window.
If a generated device event would normally be reported to
this window or one of its inferiors, the event is reported
as usual. Otherwise, the event is reported relative to the
focus window.
* If focus is PointerRoot, the focus window is dynamically
taken to be the root window of whatever screen the pointer
is on at each event from the specified device. In this
case, the revert_to argument is ignored.
* If focus is FollowKeyboard, the focus window is dynamically
taken to be the window to which the X keyboard focus is set
at each input event.
The specified focus window must be viewable at the time
XSetDeviceFocus is called, or a BadMatch error results. If the
focus window later becomes not viewable, the X server evaluates
the revert_to argument to determine the new focus window as
follows:
* If revert_to is RevertToParent, the focus reverts to the
parent (or the closest viewable ancestor), and the new
revert_to value is taken to be RevertToNone.
* If revert_to is RevertToPointerRoot,
RevertToFollowKeyboard, or RevertToNone, the focus reverts
to PointerRoot, FollowKeyboard, or None, respectively.
When the focus reverts, the X server generates DeviceFocusIn
and DeviceFocusOut events, but the last-focus-change time is
not affected.
Input extension devices are not required to support the ability
to be focused. Attempting to set the focus of a device that
does not support this request will result in a BadMatch error.
Whether or not given device can support this request can be
determined by the information returned by XOpenDevice. For
those devices that support focus, XOpenDevice will return an
XInputClassInfo structure with the input_class field equal to
the constant FocusClass (defined in the file XI.h).
XSetDeviceFocus can generate BadDevice, BadMatch, BadValue, and
BadWindow errors.
The XGetDeviceFocus request returns the focus window and the
current focus state.
Not all input extension devices can be focused. Attempting to
query the focus state of a device that can't be focused results
in a BadMatch error. A device that can be focused returns
information for input Class Focus when an XOpenDevice request
is made.
XGetDeviceFocus can generate BadDevice, and BadMatch errors.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadWindow
A value for a Window argument does not name a defined
Window.
BadMatch
This error may occur if an XGetDeviceFocus or
XSetDeviceFocus request was made specifying a device
that the server implementation does not allow to be
focused.
libXi-1.7.1.901/man/XChangePointerDevice.man 0000664 0032045 0000764 00000007600 12116564637 015313 0000000 0000000 '\" t
.\" Title: xchangepointerdevice
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XCHANGEPOINTERDEVICE" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XChangePointerDevice \- change which device is the X pointer
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XChangePointerDevice( Display *display,
XDevice *device,
int xaxis,
int yaxis);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device to be used as the X pointer\&.
.fi
.sp
.nf
xaxis
Specifies the axis of the device to be used as the X
pointer x\-axis\&.
.fi
.sp
.nf
yaxis
Specifies the axis of the device to be used as the X
pointer y\-axis\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XChangePointerDevice request causes the server to use the
specified device as the X pointer\&. The device must have been
opened by the client via XOpenDevice or a BadDevice error will
result\&. The device must support input class Valuators or a
BadMatch error will result\&. If the implementation does not
support use of the specified device as the X pointer, a
BadDevice error will result\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the specified device is grabbed by another client,
AlreadyGrabbed is returned\&. If the specified device is frozen
by a grab on another device, GrabFrozen is returned\&. If the
request is successful, Success is returned\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the request succeeds, a ChangeDeviceNotify event is sent to
all clients that have selected that event\&. A MappingNotify
event with request = MappingPointer is sent to all clients\&. The
specified device becomes the X pointer, and the old X pointer
becomes accessible through the input extension protocol
requests\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XChangePointerDevice can generate a BadDevice or a BadMatch
error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist, has not been opened by this client via
XOpenInputDevice, or is already one of the core X input
devices (pointer or keyboard)\&. This error may also occur
if the server implementation does not support using the
specified device as the X pointer\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XChangePointerDevice request
was made specifying a device that has less than two
valuators, or specifying a valuator index beyond the
range supported by the device\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeKeyboardDevice(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XListDeviceProperties.man 0000664 0032045 0000764 00000005127 12116564645 015556 0000000 0000000 '\" t
.\" Title: xlistdeviceproperties
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XLISTDEVICEPROPERTIE" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XListDeviceProperties \- List a device\*(Aqs properties\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Atom* XListDeviceProperties( Display *display,
XDevice *device,
int *nprops_return);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
The device to list the properties for\&.
.fi
.sp
.nf
nprops_return
Specifies the number of Atoms returned\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XListDeviceProperties function returns a list of the
properties associated with the input device specified in
device\&. Each device may have an arbitrary number of properties
attached, some of which were created by the driver and/or
server, others created by clients at runtime\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The client is expected to free the list of properties using
XFree\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XListDeviceProperties can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeDeviceProperty(libmansuffix),
XGetDeviceProperty(libmansuffix),
XDeleteDeviceProperty(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XOpenDevice.man 0000664 0032045 0000764 00000013157 12116564646 013472 0000000 0000000 '\" t
.\" Title: xopendevice
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XOPENDEVICE" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XOpenDevice, XCloseDevice \- open or close an extension input device
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XDevice *XOpenDevice( Display *display,
XID device_id);
.fi
.sp
.nf
XCloseDevice( Display *display,
XDevice *device);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device_id
Specifies the id of the device to be opened
.fi
.sp
.nf
device
Specifies the device to be closed
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XOpenDevice request makes an input device accessible to a
client through input extension protocol requests\&. If
successful, it returns a pointer to an XDevice structure\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XCloseDevice request makes an input device inaccessible to
a client through input extension protocol requests\&. Before
terminating, and client that has opened input devices through
the input extension should close them via CloseDevice\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
When a client makes an XCloseDevice request, any active grabs
that the client has on the device are released\&. Any event
selections that the client has are deleted, as well as any
passive grabs\&. If the requesting client is the last client
accessing the device, the server may disable all access by X to
the device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XOpenDevice and XCloseDevice can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.sp
Structures
.sp
.if n \{\
.RS 4
.\}
.nf
The XDevice structure returned by XOpenDevice contains:
typedef struct {
XID device_id;
int num_classes;
XInputClassInfo *classes;
} XDevice;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The classes field is a pointer to an array of XInputClassInfo
structures\&. Each element of this array contains an event type
base for a class of input supported by the specified device\&.
The num_classes field indicates the number of elements in the
classes array\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XInputClassInfo structure contains:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct {
unsigned char input_class;
unsigned char event_type_base;
} XInputClassInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The input_class field identifies one class of input supported
by the device\&. Defined types include KeyClass, ButtonClass,
ValuatorClass, ProximityClass, FeedbackClass, FocusClass, and
OtherClass\&. The event_type_base identifies the event type of
the first event in that class\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The information contained in the XInputClassInfo structure is
used by macros to obtain the event classes that clients use in
making XSelectExtensionEvent requests\&. Currently defined macros
include DeviceKeyPress, DeviceKeyRelease, DeviceButtonPress,
DeviceButtonRelese, DeviceMotionNotify, DeviceFocusIn,
DeviceFocusOut, ProximityIn, ProximityOut, DeviceStateNotify,
DeviceMappingNotify, ChangeDeviceNotify,
DevicePointerMotionHint, DeviceButton1Motion,
DeviceButton2Motion, DeviceButton3Motion, DeviceButton4Motion,
DeviceButton5Motion, DeviceButtonMotion, DeviceOwnerGrabButton,
DeviceButtonPressGrab, and NoExtensionEvent\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
To obtain the proper event class for a particular device, one
of the above macros is invoked using the XDevice structure for
that device\&. For example,
DeviceKeyPress (*device, type, eventclass);
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
returns the DeviceKeyPress event type and the eventclass for
DeviceKeyPress events from the specified device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
This eventclass can then be used in an XSelectExtensionEvent
request to ask the server to send DeviceKeyPress events from
this device\&. When a selected event is received via XNextEvent,
the type can be used for comparison with the type in the event\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist, or is the X keyboard or X pointer\&. This
error may also occur if some other client has caused the
specified device to become the X keyboard or X pointer
device via the XChangeKeyboardDevice or
XChangePointerDevice requests\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGrabDeviceKey.man 0000664 0032045 0000764 00000020465 12116564644 014113 0000000 0000000 '\" t
.\" Title: xgrabdevicekey
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGRABDEVICEKEY" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGrabDeviceKey, XUngrabDeviceKey \- grab/ungrab extension input device Keys
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XGrabDeviceKey( Display *display,
XDevice *device,
unsigned int key,
unsigned int modifiers,
XDevice *modifier_device,
Window grab_window,
Bool owner_events,
unsigned int event_count,
XEventClass *event_list,
int this_device_mode,
int other_devices_mode);
.fi
.sp
.nf
int XUngrabDeviceKey( Display *display,
XDevice *device,
unsigned int key,
unsigned int modifiers,
XDevice *modifier_device,
Window grab_window);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device that is to be grabbed or released\&.
.fi
.sp
.nf
Key
Specifies the device Key that is to be grabbed released
or AnyKey\&.
.fi
.sp
.nf
modifiers
Specifies the set of keymasks or AnyModifier\&.The mask is
the bitwise inclusive OR of the valid keymask bits\&.Valid
bits are: ShiftMask, LockMask, ControlMask, Mod1Mask,
Mod2Mask,Mod3Mask, Mod4Mask, Mod5Mask\&.
.fi
.sp
.nf
modifier_device
Specifies the device whose modifiers are to be used\&. If
a modifier_device ofNULL is specified, the X keyboard
will be used as the modifier_device\&.
.fi
.sp
.nf
grab_window
Specifies the grab window\&.
.fi
.sp
.nf
owner_events
Specifies a Boolean value that indicates whether the
deviceevents are to be reported as usual or reported
with respect to the grab windowif selected by the event
list\&.
.fi
.sp
.nf
event_count
Specifies the number of event classes in the event list\&.
.fi
.sp
.nf
event_list
Specifies which device events are reported to the
client\&.
.fi
.sp
.nf
this_device_mode
Specifies further processing of events from this
device\&.You can pass GrabModeSync or GrabModeAsync\&.
.fi
.sp
.nf
other_devices_mode
Specifies further processing of events from other
devices\&.You can pass GrabModeSyncor GrabModeAsync\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XGrabDeviceKey request establishes a passive grab\&. In the
future, the device is actively grabbed (as for XGrabDevice, the
last\-device\-grab time is set to the time at which the Key was
pressed (as transmitted in the DeviceKeyPress event), and the
DeviceKeyPress event is reported if all of the following
conditions are true:
* The device is not grabbed, and the specified key is
logically pressed when the specified modifier keys are
logically down, and no other keys or modifier keys are
logically down\&.
* The grab_window is an ancestor (or is) the focus window OR
the grab window is a descendant of the focus window and
contains the device\&.
* The confine_to window (if any) is viewable\&.
* A passive grab on the same key/modifier combination does
not exist on any ancestor of grab_window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The interpretation of the remaining arguments is as for
XGrabDevice\&. The active grab is terminated automatically when
the logical state of the device has the specified key released\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Note that the logical state of a device (as seen by means of
the X protocol ) may lag the physical state if device event
processing is frozen\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the key is not AnyKey, it must be in the range specified by
min_keycode and max_keycode as returned by the
XListInputDevices request\&. Otherwise, a BadValue error results\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
This request overrides all previous grabs by the same client on
the same Key/modifier combinations on the same window\&. A
modifier of AnyModifier is equivalent to issuing the grab
request for all possible modifier combinations (including the
combination of no modifiers)\&. It is not required that all
modifiers specified have currently assigned KeyCodes\&. A key of
AnyKey is equivalent to issuing the request for all possible
keys\&. Otherwise, it is not required that the specified key
currently be assigned to a physical Key\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If a modifier_device of NULL is specified, the X keyboard will
be used as the modifier_device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If some other client has already issued a XGrabDeviceKey with
the same Key/modifier combination on the same window, a
BadAccess error results\&. When using AnyModifier or AnyKey, the
request fails completely, and a BadAccess error results (no
grabs are established) if there is a conflicting grab for any
combination\&.XGrabDeviceKey has no effect on an active grab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGrabDeviceKey can generate BadAccess, BadClass, BadDevice,
BadMatch, BadValue, and BadWindow errors\&. It returns Success on
successful completion of the request\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XUngrabDeviceKey request releases the passive grab for a
key/modifier combination on the specified window if it was
grabbed by this client\&. A modifier of AnyModifier is equivalent
to issuing the ungrab request for all possible modifier
combinations, including the combination of no modifiers\&. A Key
of AnyKey is equivalent to issuing the request for all possible
Keys\&.XUngrabDeviceKey has no effect on an active grab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If a modifier_device of NULL is specified, the X keyboard will
be used as the modifier_device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XUngrabDeviceKey can generate BadDevice, BadMatch, BadValue and
BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGrabDeviceKey request was
made specifying a device that has no keys, or a modifier
device that has no keys\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XAllowDeviceEvents(libmansuffix), XGrabDevice(libmansuffix), XGrabDeviceButton(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIDefineCursor.txt 0000664 0032045 0000764 00000003656 12110553734 014207 0000000 0000000 XIDEFINECURSOR(libmansuffix)
============================
NAME
----
XIDefineCursor, XIUndefineCursor - define device cursors.
SYNOPSIS
--------
#include
int XIDefineCursor( Display *display,
int deviceid,
Window win,
Cursor cursor);
int XIUndefineCursor( Display *display,
int deviceid,
Window win);
cursor
Specifies the cursor that is to be displayed or None.
deviceid
Specifies the device whose cursor is to change.
display
Specifies the connection to the X server.
win
Specifies the window.
DESCRIPTION
-----------
If a cursor is set, it will be used when the device's pointer
is in the window. If the cursor is None, it is equivalent to
XIUndefineCursor.
The deviceid must be a master pointer device or a BadDevice error is
returned.
XIDefineCursor can generate BadDevice, BadCursor and BadWindow.
The XIUndefineCursor function undoes the effect of a previous
XIDefineCursor for this window. When the pointer is in the
window, the window's default cursor will now be used. If no
default cursor is defined, the parent's cursor for this device
will be used (if defined) or the parent's default cursor will
be used.
XIDefineCursor and XIUndefineCursor are identical to
XDefineCursor and XUndefineCursor but specify the device
explicitly.
XIUndefineCursor can generate a BadDevice and a BadWindow
error.
DIAGNOSTICS
-----------
BadCursor
A value for a cursor argument does not name a defined
cursor.
BadDevice
An invalid device was specified. The device does not
exist or is not a pointer device.
BadWindow
A value for a Window argument does not name a defined
window.
See also
XDefineCursor, XUndefineCursor
libXi-1.7.1.901/man/XListInputDevices.man 0000664 0032045 0000764 00000025473 12116564646 014713 0000000 0000000 '\" t
.\" Title: xlistinputdevices
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XLISTINPUTDEVICES" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XListInputDevices, XFreeDeviceList \- list available input devices
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XDeviceInfo *XListInputDevices( Display *display,
int *ndevices_return);
.fi
.sp
.nf
int XFreeDeviceList( XDeviceInfo *list);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
ndevices_return
Specifies a pointer to a variable where the number of
available devices canbe returned\&.
.fi
.sp
.nf
list
Specifies the list of devices to free\&. The
XFreeDeviceList functionfrees the list of available
extension input devices\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XListInputDevices request lists the available input
devices\&. This list includes the core keyboard and any physical
input device currently accessible through the X server, and any
input devices that are not currently accessible through the X
server but could be accessed if requested\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
A master pointer is a virtual pointer device that does not
represent a physical device\&. It is visually represented through
a cursor\&. A master keyboard is a virtual keyboard device that
does not represent a physical device\&. It is virtually
representd through a keyboard focus\&. A master pointer and a
master keyboard are always paired (i\&.e\&. if shift is pressed on
the master keyboard, a pointer click would be a shift\-click)\&.
Multiple master pointer/keyboard pairs can exist\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
X servers supporting the X Input Extension version 2,
XListInputDevices only returns the first master pointer, the
first master keyboard and all slave devices\&. Additional master
devices are not listed\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Physical devices (so\-called slave devices) are attached to
either a master pointer or a master keyboard, depending on
their capabilities\&. If a slave device generates an event, the
event is also generated by the respective master device\&.
Multiple slave devices can be attached to a single master
device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Some server implementations may make all physical input devices
available at the time the server is initialized\&. Others may
wait until requested by a client to access an input device\&. In
the latter case, it is possible that an input device will be
listed as available at one time but not at another\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
For each input device available to the server, the
XListInputDevices request returns an XDeviceInfo structure\&.
That structure contains a pointer to a list of structures, each
of which contains information about one class of input
supported by the device\&. The XDeviceInfo structure is defined
as follows:
typedef struct _XDeviceInfo {
XID id;
Atom type;
char *name;
int num_classes;
int use;
XAnyClassPtr inputclassinfo;
} XDeviceInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The id is a number in the range 0\-128 that uniquely identifies
the device\&. It is assigned to the device when it is initialized
by the server\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The type field is of type Atom and indicates the nature of the
device\&. The type will correspond to one of the following strings
(defined in the header file XI\&.h):
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XI_MOUSE XI_TABLET XI_KEYBOARD XI_TOUCHSCREEN XI_TOUCHPAD
XI_BUTTONBOX XI_BARCODE XI_TRACKBALL XI_QUADRATURE XI_ID_MODULE
XI_ONE_KNOB XI_NINE_KNOB XI_KNOB_BOX XI_SPACEBALL XI_DATAGLOVE
XI_EYETRACKER XI_CURSORKEYS XI_FOOTMOUSE XI_JOYSTICK
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
These strings may be used in an XInternAtom request to return
an atom that can be compared with the type field of the
XDeviceInfo structure\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The name field contains a pointer to a null\-terminated string
that serves as identifier of the device\&. This identifier may be
user\-configured or automatically assigned by the server\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The num_classes field is a number in the range 0\-255 that
specifies the number of input classes supported by the device
for which information is returned by ListInputDevices\&. Some
input classes, such as class Focus and class Proximity do not
have any information to be returned by ListInputDevices\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
All devices provide an AttachClass\&. This class specifies the
master device a given slave device is attached to\&. For master
devices, the class specifies the respective paired master
device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The use field specifies how the device is currently being used\&.
If the value is IsXKeyboard, the device is a master keyboard\&.
If the value is IsXPointer, the device is a master pointer\&. If
the value is IsXExtensionPointer, the device is a slave
pointer\&. If the value is IsXExtensionKeyboard, the device is a
slave keyboard\&. If the value is IsXExtensionDevice, the device
is available for use as an extension device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The inputclassinfo field contains a pointer to the first
input\-class specific data\&. The first two fields are common to
all classes\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The class field is a number in the range 0\-255\&. It uniquely
identifies the class of input for which information is
returned\&. Currently defined classes are KeyClass, ButtonClass,
and ValuatorClass\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The length field is a number in the range 0\- 255\&. It specifies
the number of bytes of data that are contained in this input
class\&. The length includes the class and length fields\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XKeyInfo structure describes the characteristics of the
keys on the device\&. It is defined as follows:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct _XKeyInfo {
XID class;
int length;
unsigned short min_keycode;
unsigned short max_keycode;
unsigned short num_keys;
} XKeyInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
min_keycode is of type KEYCODE\&. It specifies the minimum
keycode that the device will report\&. The minimum keycode will
not be smaller than 8\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
max_keycode is of type KEYCODE\&. It specifies the maximum
keycode that the device will report\&. The maximum keycode will
not be larger than 255\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
num_keys specifies the number of keys that the device has\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XButtonInfo structure defines the characteristics of the
buttons on the device\&. It is defined as follows:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct _XButtonInfo {
XID class;
int length;
short num_buttons;
} XButtonInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
num_buttons specifies the number of buttons that the device
has\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XValuatorInfo structure defines the characteristics of the
valuators on the device\&. It is defined as follows:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct _XValuatorInfo {
XID class;
int length;
unsigned char num_axes;
unsigned char mode;
unsigned long motion_buffer;
XAxisInfoPtr axes;
} XValuatorInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
num_axes contains the number of axes the device supports\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
mode is a constant that has one of the following values:
Absolute or Relative\&. Some devices allow the mode to be changed
dynamically via the SetDeviceMode request\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
motion_buffer_size is a cardinal number that specifies the
number of elements that can be contained in the motion history
buffer for the device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The axes field contains a pointer to an XAxisInfo structure\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XAxisInfo structure is defined as follows:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
typedef struct _XAxisInfo {
int resolution;
int min_value;
int max_value;
} XAxisInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The resolution contains a number in counts/meter\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The min_val field contains a number that specifies the minimum
value the device reports for this axis\&. For devices whose mode
is Relative, the min_val field will contain 0\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The max_val field contains a number that specifies the maximum
value the device reports for this axis\&. For devices whose mode
is Relative, the max_val field will contain 0\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XAttachInfo structure is defined as follows:
typedef struct _XAttachInfo {
int attached;
} XAttachInfo;
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the device is a slave device, attached specifies the device
ID of the master device this device is attached to\&. If the
device is not attached to a master device, attached is
Floating\&. If the device is a master device, attached specifies
the device ID of the master device this device is paired with\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
To free the XDeviceInfo array created by XListInputDevices, use
XFreeDeviceList\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIGrabKeycode.man 0000664 0032045 0000764 00000000056 12116564654 013732 0000000 0000000 .so manlibmansuffix/XIGrabButton.libmansuffix
libXi-1.7.1.901/man/XChangeDeviceDontPropagateList.man 0000664 0032045 0000764 00000011145 12116564637 017275 0000000 0000000 '\" t
.\" Title: xchangedevicedontpropagatelist
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XCHANGEDEVICEDONTPRO" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XChangeDeviceDontPropagateList, XGetDeviceDontPropagateList \- query or change the dont\-propagate\-list for extension devices
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XChangeDeviceDontPropagateList( Display *display,
Window window,
int count,
XEventClass *event_list,
int mode);
.fi
.sp
.nf
XEventClass* XGetDeviceDontPropagateList( Display *display,
Window window,
int *count);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
window
Specifies the window whose dont\-propagate\-list is to be
queried or modified\&.
.fi
.sp
.nf
event_list
Specifies a pointer to a list of event classes\&.
.fi
.sp
.nf
mode
Specifies the mode\&.You can pass AddToList, or
DeleteFromList\&.
.fi
.sp
.nf
count
Specifies the number of event classes in the list\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XChangeDeviceDontPropagateList request modifies the list of
events that should not be propagated to ancestors of the event
window\&. This request allows extension events to be added to or
deleted from that list\&. By default, all events are propagated
to ancestor windows\&. Once modified, the list remains modified
for the life of the window\&. Events are not removed from the
list because the client that added them has terminated\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Suppression of event propagation is not allowed for all input
extension events\&. If a specified event class is one that cannot
be suppressed, a BadClass error will result\&. Events that can be
suppressed include DeviceKeyPress, DeviceKeyRelease,
DeviceButtonPress, DeviceButtonRelease, DeviceMotionNotify,
ProximityIn, and ProximityOut\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeDeviceDontPropagateList can generate a BadDevice,
BadClass, or BadValue error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XGetDeviceDontPropagateList request queries the list of
events that should not be propagated to ancestors of the event
window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetDeviceDontPropagateList can generate a BadClass or
BadWindow error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if some
other client has caused the specified device to become
the X keyboard or X pointer device via the
XChangeKeyboardDevice or XChangePointerDevice requests\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
An invalid window id was specified\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadClass
An invalid event class was specified\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XListDeviceProperties.txt 0000664 0032045 0000764 00000002343 12110553734 015606 0000000 0000000 XLISTDEVICEPROPERTIES(libmansuffix)
===================================
NAME
----
XListDeviceProperties - List a device's properties.
SYNOPSIS
--------
#include
Atom* XListDeviceProperties( Display *display,
XDevice *device,
int *nprops_return);
display
Specifies the connection to the X server.
device
The device to list the properties for.
nprops_return
Specifies the number of Atoms returned.
DESCRIPTION
-----------
The XListDeviceProperties function returns a list of the
properties associated with the input device specified in
device. Each device may have an arbitrary number of properties
attached, some of which were created by the driver and/or
server, others created by clients at runtime.
The client is expected to free the list of properties using
XFree.
XListDeviceProperties can generate a BadDevice error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The device does not
exist.
SEE ALSO
--------
XChangeDeviceProperty(libmansuffix),
XGetDeviceProperty(libmansuffix),
XDeleteDeviceProperty(libmansuffix)
libXi-1.7.1.901/man/XGetDeviceKeyMapping.man 0000664 0032045 0000764 00000015771 12116564641 015274 0000000 0000000 '\" t
.\" Title: xgetdevicekeymapping
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XGETDEVICEKEYMAPPING" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XGetDeviceKeyMapping, XChangeDeviceKeyMapping \- query or change device key mappings
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
KeySym *XGetDeviceKeyMapping( Display *display,
XDevice *device,
KeyCode first_keycode,
int keycode_count,
int *keysyms_per_keycode_return);
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose key mapping is to be queried
or modified\&.
.fi
.sp
.nf
first_keycode
Specifies the first KeyCode to be returned\&.
.fi
.sp
.nf
keycode_count
Specifies the number of KeyCodes to be returned or
modified\&.
.fi
.sp
.nf
keysyms_per_keycode
Specifies the number of KeySyms per KeyCode\&.
.fi
.sp
.nf
keysyms_per_keycode_return
Specifies the address of a variable into which the
number of KeySyms per KeyCodewill be returned\&.
.fi
.sp
.nf
keysyms
Specifies the address of an array of KeySyms\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
For the specified device, the XGetDeviceKeyMapping request
returns the symbols for the specified number of KeyCodes
starting with first_keycode\&. The value specified in
first_keycode must be greater than or equal to min_keycode as
returned by XListInputDevices, or a BadValue error results\&. In
addition, the following expression must be less than or equal
to max_keycode as returned by XListInputDevices:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
first_keycode + keycode_count \- 1
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If this is not the case, a BadValue error results\&. The number
of elements in the KeySyms list is:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
keycode_count * keysyms_per_keycode_return
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
KeySym number N, counting from zero, for KeyCode K has the
following index in the list, counting from zero: (K \-
first_code) * keysyms_per_code_return + N
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The X server arbitrarily chooses the keysyms_per_keycode_return
value to be large enough to report all requested symbols\&. A
special KeySym value of NoSymbol is used to fill in unused
elements for individual KeyCodes\&. To free the storage returned
by XGetDeviceKeyMapping, use XFree\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the specified device does not support input class keys, a
BadMatch error will result\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetDeviceKeyMapping can generate a BadDevice, BadMatch, or
BadValue error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
For the specified device, the XChangeDeviceKeyMapping request
defines the symbols for the specified number of KeyCodes
starting with first_keycode\&. The symbols for KeyCodes outside
this range remain unchanged\&. The number of elements in keysyms
must be:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
num_codes * keysyms_per_keycode
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The specified first_keycode must be greater than or equal to
min_keycode returned by XListInputDevices, or a BadValue error
results\&. In addition, the following expression must be less
than or equal to max_keycode as returned by XListInputDevices,
or a BadValue error results:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
first_keycode + num_codes \- 1
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
KeySym number N, counting from zero, for KeyCode K has the
following index in keysyms, counting from zero:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
(K \- first_keycode) * keysyms_per_keycode + N
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The specified keysyms_per_keycode can be chosen arbitrarily by
the client to be large enough to hold all desired symbols\&. A
special KeySym value of NoSymbol should be used to fill in
unused elements for individual KeyCodes\&. It is legal for
NoSymbol to appear in nontrailing positions of the effective
list for a KeyCode\&.XChangeDeviceKeyMapping generates a
DeviceMappingNotify event that is sent to all clients that have
selected that type of event\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
There is no requirement that the X server interpret this
mapping\&. It is merely stored for reading and writing by
clients\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the specified device does not support input class keys, a
BadMatch error results\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XChangeDeviceKeyMapping can generate a BadDevice, BadMatch,
BadAlloc, or BadValue error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&. This error may also occur if the
specified device is the X keyboard or X pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XGetDeviceKeyMapping or
XChangeDeviceKeyMapping request was made specifying a
device that has no keys\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadAlloc
The server failed to allocate the requested resource or
server memory\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XSetDeviceButtonMapping(libmansuffix), XSetDeviceModifierMapping(__libmansuffix_)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XDeleteDeviceProperty.man 0000664 0032045 0000764 00000000064 12116564643 015526 0000000 0000000 .so manlibmansuffix/XGetDeviceProperty.libmansuffix
libXi-1.7.1.901/man/XISetClientPointer.man 0000664 0032045 0000764 00000006650 12116564656 015016 0000000 0000000 '\" t
.\" Title: xisetclientpointer
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XISETCLIENTPOINTER" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XISetClientPointer, XIGetClientPointer \- set or get the ClientPointer device\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XISetClientPointer( Display *display,
Window win,
int deviceid);
.fi
.sp
.nf
Bool XIGetClientPointer( Display *display,
Window win,
int *device);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
win
Specifies a window belonging to the client\&. May be None\&.
.fi
.sp
.nf
deviceid
Specifies the ClientPointer device\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The ClientPointer is the device that is percieved to be the
core pointer for non\-XI protocol requests and replies\&. Each
time a protocol message needs device\-dependent data and the
device is not explicitly given, the ClientPointer device is
used to obtain the data\&. For example, a XQueryPointer request
will return the coordinates of the ClientPointer\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XISetClientPointer request sets the ClientPointer device for
the client that owns the given window\&. If win is None, the
requesting client\*(Aqs ClientPointer is set to the device
specified with deviceid\&. Only master pointer devices can be set
as ClientPointer\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XISetClientPointer and can generate a BadDevice and a BadWindow
error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XIGetClientPointer request returns the ClientPointer\*(Aqs
device ID for the client that owns the given window\&. If win is
None, the requesting client\*(Aqs ClientPointer is returned\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
win may be a client ID instead of a window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIGetClientPointer can generate a BadWindow error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a master pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
window\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIDefineCursor.man 0000664 0032045 0000764 00000007027 12116564652 014146 0000000 0000000 '\" t
.\" Title: xidefinecursor
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIDEFINECURSOR" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIDefineCursor, XIUndefineCursor \- define device cursors\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XIDefineCursor( Display *display,
int deviceid,
Window win,
Cursor cursor);
.fi
.sp
.nf
int XIUndefineCursor( Display *display,
int deviceid,
Window win);
.fi
.sp
.nf
cursor
Specifies the cursor that is to be displayed or None\&.
.fi
.sp
.nf
deviceid
Specifies the device whose cursor is to change\&.
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
win
Specifies the window\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
If a cursor is set, it will be used when the device\*(Aqs pointer
is in the window\&. If the cursor is None, it is equivalent to
XIUndefineCursor\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The deviceid must be a master pointer device or a BadDevice error is
returned\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIDefineCursor can generate BadDevice, BadCursor and BadWindow\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XIUndefineCursor function undoes the effect of a previous
XIDefineCursor for this window\&. When the pointer is in the
window, the window\*(Aqs default cursor will now be used\&. If no
default cursor is defined, the parent\*(Aqs cursor for this device
will be used (if defined) or the parent\*(Aqs default cursor will
be used\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIDefineCursor and XIUndefineCursor are identical to
XDefineCursor and XUndefineCursor but specify the device
explicitly\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIUndefineCursor can generate a BadDevice and a BadWindow
error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadCursor
A value for a cursor argument does not name a defined
cursor\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
window\&.
.fi
.if n \{\
.RE
.\}
.sp
See also
.sp
.if n \{\
.RS 4
.\}
.nf
XDefineCursor, XUndefineCursor
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XGetDeviceKeyMapping.txt 0000664 0032045 0000764 00000011625 12110553734 015325 0000000 0000000 XGETDEVICEKEYMAPPING(libmansuffix)
==================================
NAME
----
XGetDeviceKeyMapping, XChangeDeviceKeyMapping - query or change
device key mappings
SYNOPSIS
--------
#include
KeySym *XGetDeviceKeyMapping( Display *display,
XDevice *device,
KeyCode first_keycode,
int keycode_count,
int *keysyms_per_keycode_return);
display
Specifies the connection to the X server.
device
Specifies the device whose key mapping is to be queried
or modified.
first_keycode
Specifies the first KeyCode to be returned.
keycode_count
Specifies the number of KeyCodes to be returned or
modified.
keysyms_per_keycode
Specifies the number of KeySyms per KeyCode.
keysyms_per_keycode_return
Specifies the address of a variable into which the
number of KeySyms per KeyCodewill be returned.
keysyms
Specifies the address of an array of KeySyms.
DESCRIPTION
-----------
For the specified device, the XGetDeviceKeyMapping request
returns the symbols for the specified number of KeyCodes
starting with first_keycode. The value specified in
first_keycode must be greater than or equal to min_keycode as
returned by XListInputDevices, or a BadValue error results. In
addition, the following expression must be less than or equal
to max_keycode as returned by XListInputDevices:
first_keycode + keycode_count - 1
If this is not the case, a BadValue error results. The number
of elements in the KeySyms list is:
keycode_count * keysyms_per_keycode_return
KeySym number N, counting from zero, for KeyCode K has the
following index in the list, counting from zero: (K -
first_code) * keysyms_per_code_return + N
The X server arbitrarily chooses the keysyms_per_keycode_return
value to be large enough to report all requested symbols. A
special KeySym value of NoSymbol is used to fill in unused
elements for individual KeyCodes. To free the storage returned
by XGetDeviceKeyMapping, use XFree.
If the specified device does not support input class keys, a
BadMatch error will result.
XGetDeviceKeyMapping can generate a BadDevice, BadMatch, or
BadValue error.
For the specified device, the XChangeDeviceKeyMapping request
defines the symbols for the specified number of KeyCodes
starting with first_keycode. The symbols for KeyCodes outside
this range remain unchanged. The number of elements in keysyms
must be:
num_codes * keysyms_per_keycode
The specified first_keycode must be greater than or equal to
min_keycode returned by XListInputDevices, or a BadValue error
results. In addition, the following expression must be less
than or equal to max_keycode as returned by XListInputDevices,
or a BadValue error results:
first_keycode + num_codes - 1
KeySym number N, counting from zero, for KeyCode K has the
following index in keysyms, counting from zero:
(K - first_keycode) * keysyms_per_keycode + N
The specified keysyms_per_keycode can be chosen arbitrarily by
the client to be large enough to hold all desired symbols. A
special KeySym value of NoSymbol should be used to fill in
unused elements for individual KeyCodes. It is legal for
NoSymbol to appear in nontrailing positions of the effective
list for a KeyCode.XChangeDeviceKeyMapping generates a
DeviceMappingNotify event that is sent to all clients that have
selected that type of event.
There is no requirement that the X server interpret this
mapping. It is merely stored for reading and writing by
clients.
If the specified device does not support input class keys, a
BadMatch error results.
XChangeDeviceKeyMapping can generate a BadDevice, BadMatch,
BadAlloc, or BadValue error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadMatch
This error may occur if an XGetDeviceKeyMapping or
XChangeDeviceKeyMapping request was made specifying a
device that has no keys.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadAlloc
The server failed to allocate the requested resource or
server memory.
SEE ALSO
--------
XSetDeviceButtonMapping(libmansuffix), XSetDeviceModifierMapping(__libmansuffix_)
libXi-1.7.1.901/man/XIGrabButton.txt 0000664 0032045 0000764 00000021737 12110553734 013666 0000000 0000000 XIGRABBUTTON(libmansuffix)
==========================
NAME
----
XIGrabButton, XIUngrabButton, XIGrabKeycode, XIUngrabKeycode, XIGrabTouchBegin, XIUngrabTouchBegin - grab/ungrab buttons or keys
SYNOPSIS
--------
#include
int XIGrabButton( Display *display,
int deviceid,
int button,
Window grab_window,
Cursor cursor,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
int XIUngrabButton( Display *display,
int deviceid,
int button,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers);
int XIGrabKeycode( Display *display,
int deviceid,
int keycode,
Window grab_window,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
int XIUngrabKeycode( Display *display,
int deviceid,
int keycode,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers);
int XIGrabTouchBegin( Display *display,
int deviceid,
Window grab_window,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
int XIUngrabTouchBegin( Display *display,
int deviceid,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers);
display
Specifies the connection to the X server.
device
Specifies the device that is to be grabbed or released
button
Specifies the device button that is to be grabbed or
released or XIAnyButton.
keycode
Specifies the keycode that is to be grabbed or released
or XIAnyKeycode.
num_modifiers
Number of elements in modifiers or modifiers_inout.
modifiers
Specifies the set of latched and base modifiers or
XIAnyModifier to ungrab. The data type is for
consistency with the respective grab request and the
status code of the XIGrabModifiers struct is ignored.
modifiers_inout
Specifies the set of latched and base modifiers or
XIAnyModifier to grab. Returns the modifiers that could
not be grabbed and their error code.
grab_window
Specifies the grab window.
owner_events
Specifies a Boolean value that indicates whether the are
to be reported as usual or reported with respect to the
grab window.
mask
Specifies the event mask.
grab_mode
Specifies further processing of events from this device.
You can pass XIGrabModeSync or XIGrabModeAsync.
paired_device_mode
Specifies further processing of events from the paired
master device. You can pass XIGrabModeSync or
XIGrabModeAsync. If deviceid specifies a floating slave
device, this parameter is ignored.
DESCRIPTION
-----------
XIGrabButton, XIGrabKeycode and XIGrabTouchBegin establish a passive
grab. The modifier device for a button grab is the paired master device
if deviceid specifies a master pointer. Otherwise, the modifier
device is the device specified with deviceid. In the future,
the device is actively grabbed (as for XIGrabDevice, the
last-grab time is set to the time at which the button or keycode
was pressed and the XI_ButtonPress or XI_KeyPress event is
reported if all of the following conditions are true:
* The device is not grabbed, and the specified button or
keycode is logically pressed or a touch event occurs when the
specified modifier keys are logically down on the modifier device
and no other buttons or modifier keys are logically down.
* Either the grab window is an ancestor of (or is) the focus
window, OR the grab window is a descendent of the focus
window and contains the device.
* A passive grab on the same button/modifier combination does
not exist on any ancestor of grab_window.
The interpretation of the remaining arguments is as for
XIGrabDevice. The active grab is terminated automatically when
the logical state of the device has all buttons or keys
released (independent of the logical state of the modifier
keys).
If the device is an attached slave device, the device is
automatically detached from the master device when the grab
activates and reattached to the same master device when the
grab deactivates. If the master device is removed while the
device is floating as a result of a grab, the device remains
floating once the grab deactivates.
Note that the logical state of a device (as seen by client
applications) may lag the physical state if device event
processing is frozen.
This request overrides all previous grabs by the same client on
the same button/modifier or keycode/modifier combinations on the
same window. A modifiers of XIAnyModifier is equivalent to
issuing the grab request for all possible modifier combinations
(including the combination of no modifiers). It is not required
that all modifiers specified have currently assigned KeyCodes.
A button of XIAnyButton is equivalent to issuing the request
for all possible buttons. Otherwise, it is not required that
the specified button currently be assigned to a physical
button.
If some other client has already issued a XIGrabButton or
XIGrabKeycode with the same button/modifier or keycode/modifier
combination on the same window, a BadAccess error results. When
using XIAnyModifier or XIAnyButton , the request fails
completely, and a XIBadAccess error results (no grabs are
established) if there is a conflicting grab for any
combination. XIGrabButton and XIGrabKeycode have no effect on an
active grab.
On success, XIGrabButton, XIGrabKeycode and XIGrabTouchBegin return 0;
If one or more modifier combinations could not be grabbed,
XIGrabButton, XIGrabKeycode and XIGrabTouchBegin return the number of
failed combinations and modifiers_inout contains the failed combinations
and their respective error codes.
XIGrabButton, XIGrabKeycode and XIGrabTouchBegin can generate BadClass,
BadDevice, BadMatch, BadValue, and BadWindow errors.
XIUngrabButton, XIUngrabKeycode and XIUngrabTouchBegin release the
passive grab for a button/modifier, keycode/modifier or touch/modifier
combination on the specified window if it was grabbed by this client. A
modifier of XIAnyModifier is equivalent to issuing the ungrab request
for all possible modifier combinations, including the
combination of no modifiers. A button of XIAnyButton is
equivalent to issuing the request for all possible buttons.
XIUngrabButton and XIUngrabKeycode have no effect on an active
grab.
XIUngrabButton, XIUngrabKeycode and XIUngrabTouchBegin can generate
BadDevice, BadMatch, BadValue and BadWindow errors.
RETURN VALUE
------------
XIGrabButton, XIGrabKeycode and XIGrabTouchBegin return the number of
modifier combination that could not establish a passive grab. The
modifiers are returned in modifiers_inout, along with the respective
error for this modifier combination. If XIGrabButton, XIGrabKeycode
or XIGrabTouchBegin return zero, passive grabs with all requested
modifier combinations were established successfully.
DIAGNOSTICS
-----------
BadDevice
An invalid deviceid was specified.
BadMatch
This error may occur if XIGrabButton specified a device
that has no buttons, or XIGrabKeycode specified a device
that has no keys, or XIGrabTouchBegin specified a device
that is not touch-capable.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadWindow
A value for a Window argument does not name a defined
Window.
BUGS
----
The protocol headers for XI 2.0 did not provide
XIGrabModeAsync or XIGrabModeSync. Use GrabModeSync and
GrabModeAsync instead, respectively.
SEE ALSO
--------
XIAllowEvents(libmansuffix)
libXi-1.7.1.901/man/XGetDeviceModifierMapping.txt 0000664 0032045 0000764 00000010203 12110553734 016322 0000000 0000000 XGETDEVICEMODIFIERMAPPING(libmansuffix)
=======================================
NAME
----
XGetDeviceModifierMapping, XSetDeviceModifierMapping - query or
change device modifier mappings
SYNOPSIS
--------
#include
int XSetDeviceModifierMapping( Display *display,
XDevice *device,
XModifierKeymap *modmap);
XModifierKeymap *XGetDeviceModifierMapping( Display *display,
XDevice *device);
display
Specifies the connection to the X server.
device
Specifies the device whose modifier mapping is to be
queried or modified.
modmap
Specifies a pointer to the XModifierKeymap structure.
DESCRIPTION
-----------
The XSetDeviceModifierMapping request specifies the KeyCodes of
the keys (if any) that are to be used as modifiers for the
specified device. If it succeeds, the X server generates a
DeviceMappingNotify event, and XSetDeviceModifierMapping
returns MappingSuccess. X permits at most eight modifier keys.
If more than eight are specified in the XModifierKeymap
structure, a BadLength error results.
The modifiermap member of the XModifierKeymap structure
contains eight sets of max_keypermod KeyCodes, one for each
modifier in the order Shift, Lock, Control, Mod1, Mod2, Mod3,
Mod4, and Mod5. Only nonzero KeyCodes have meaning in each set,
and zero KeyCodes are ignored. In addition, all of the nonzero
KeyCodes must be in the range specified by min_keycode and
max_keycode as returned by XListInputDevices, or a BadValue
error results. No KeyCode may appear twice in the entire map,
or a BadValue error results.
An X server can impose restrictions on how modifiers can be
changed, for example, if certain keys do not generate up
transitions in hardware, if auto-repeat cannot be disabled on
certain keys, or if multiple modifier keys are not supported.
If some such restriction is violated, the status reply is
MappingFailed, and none of the modifiers are changed. If the
new KeyCodes specified for a modifier differ from those
currently defined and any (current or new) keys for that
modifier are in the logically down state,
XSetDeviceModifierMapping returns MappingBusy, and none of the
modifiers is changed.
XSetDeviceModifierMapping can generate BadLength, BadDevice,
BadMatch, BadAlloc, and BadValue errors.
The XGetDeviceModifierMapping request returns a pointer to a
newly created XModifierKeymap structure that contains the keys
being used as modifiers. The structure should be freed after
use by calling XFreeModifierMapping . If only zero values
appear in the set for any modifier, that modifier is disabled.
XGetDeviceModifierMapping can generate BadDevice and BadMatch
errors.
Structures
The XModifierKeymap structure contains:
typedef struct {
int max_keypermod;
KeyCode *modifiermap;
} XModifierKeymap;
DIAGNOSTICS
-----------
BadLength
More than eight keys were specified in the
XModifierKeymap structure.
BadAlloc
The server failed to allocate the requested resource or
server memory.
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadMatch
This error may occur if an XGetDeviceModifierMapping or
XChangeDeviceModifierMapping request was made specifying
a device that has no keys.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
SEE ALSO
--------
XSetDeviceKeyMapping(libmansuffix), XSetDeviceButtonMapping(libmansuffix)
libXi-1.7.1.901/man/XGetDeviceButtonMapping.man 0000664 0032045 0000764 00000000071 12116564650 016002 0000000 0000000 .so manlibmansuffix/XSetDeviceButtonMapping.libmansuffix
libXi-1.7.1.901/man/XIQueryPointer.man 0000664 0032045 0000764 00000010567 12116564656 014233 0000000 0000000 '\" t
.\" Title: xiquerypointer
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIQUERYPOINTER" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIQueryPointer \- get device pointer coordinates\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Bool XIQueryPointer( Display *display,
int deviceid,
Window win,
Window *root_return,
Window *child_return,
double *root_x_return,
double *root_y_return,
double *win_x_return,
double *win_y_return,
XIButtonState *buttons_return,
XIModifierState *modifiers_return,
XIGroupState *group_return);
.fi
.sp
.nf
buttons_return
Returns the current button state\&.
.fi
.sp
.nf
child_return
Returns the child window that the pointer is located in,
if any\&.
.fi
.sp
.nf
deviceid
Specifies the device to query\&.
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
group_return
Returns the current group state\&.
.fi
.sp
.nf
modifiers_return
Returns the current state of the modifier keys\&.
.fi
.sp
.nf
root_return
Returns the root window that the pointer is in\&.
.fi
.sp
.nf
root_x_return, root_y_return
Return the pointer coordinates relative to the root
window\*(Aqs origin\&.
.fi
.sp
.nf
win
Specifies the window\&.
.fi
.sp
.nf
win_x_return, win_y_return
Return the pointer coordinates relative to the specified
window\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XIQueryPointer function returns the root window the
device\*(Aqs pointer is logically on and the pointer coordinates
relative to the root window\*(Aqs origin\&. If XIQueryPointer returns
False, the pointer is not on the same screen as the specified
window, and XIQueryPointer returns None to child_return and
zero to win_x_return and win_y_return\&. If XIQueryPointer
returns True, the pointer coordinates returned to win_x_return
and win_y_return are relative to the origin of the specified
window\&. In this case, XIQueryPointer returns the child that
contains the pointer, if any, or else None to child_return\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIQueryPointer returns the current logical state of the buttons
buttons_return\&. The keyboard paired with the master pointer is
selected to obtain the data for modifiers_return and
group_return\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The mask field in buttons_return is dynamically allocated and
must be freed by the caller\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIQueryPointer is identical to XQueryPointer but specifies the
device explicitly\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIQueryPointer can generate a BadDevice and a BadWindow error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a pointer device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
window\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XQueryPointer(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIGrabEnter.txt 0000664 0032045 0000764 00000016004 12110553734 013457 0000000 0000000 XIGRABENTER(libmansuffix)
=========================
NAME
----
XIGrabEnter, XIUngrabEnter, XIGrabFocusIn, XIUngrabFocusIn -
grab/ungrab enter or focus in events.
SYNOPSIS
--------
#include
int XIGrabEnter( Display *display,
int deviceid,
Window grab_window,
Cursor cursor,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
int XIUngrabEnter( Display *display,
int deviceid,
Window grab_window
int num_modifiers,
XIGrabModifiers *modifiers);
int XIGrabFocusIn ( Display *display,
int deviceid,
Window grab_window
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
int XIUngrabFocusIn( Display *display,
int deviceid,
Window grab_window
int num_modifiers,
XIGrabModifiers *modifiers);
display
Specifies the connection to the X server.
device
Specifies the device that is to be grabbed or released
num_modifiers
Number of elements in modifiers or modifiers_inout.
modifiers
Specifies the set of latched and base modifiers or
XIAnyModifier to ungrab. The data type is for
consistency with the respective grab request and the
status code of the XIGrabModifiers struct is ignored.
modifiers_inout
Specifies the set of latched and base modifiers or
XIAnyModifier to grab. Returns the modifiers that could
not be grabbed and their status code.
grab_window
Specifies the grab window.
owner_events
Specifies a Boolean value that indicates whether the are
to be reported as usual or reported with respect to the
grab window.
mask
Specifies the event mask.
grab_mode
Specifies further processing of events from this device.
You can pass XIGrabModeSync or XIGrabModeAsync.
paired_device_mode
Specifies further processing of events from the paired
master device. You can pass XIGrabModeSync or
XIGrabModeAsync. If deviceid specifies a floating slave
device, this parameter is ignored.
DESCRIPTION
-----------
XIGrabEnter and XIGrabFocusIn establish a passive grab. The
modifier device for a enter grab is the paired master device if
deviceid specifies a master pointer. Otherwise, the modifier
device is the device specified with deviceid.
For XIGrabEnter and XIGrabFocusIn, in the future, the device is
actively grabbed (as for XIGrabDevice, the last-grab time is
set to the time at which the pointer/focus entered window) if
the device is not grabbed and the pointer has entered the
grab_window or the focus has been set to the grab_window when
the specified modifier keys are logically down on the modifier
device and no other buttons or modifier keys are logically
down.
The interpretation of the remaining arguments is as for
XIGrabDevice. The active grab is terminated automatically when
the pointer leaves the window or the focus is set to a
different window (independent of the logical state of the
modifier keys).
If the device is an attached slave device, the device is
automatically detached from the master device when the grab
activates and reattached to the same master device when the
grab deactivates. If the master device is removed while the
device is floating as a result of a grab, the device remains
floating once the grab deactivates.
Note that the logical state of a device (as seen by client
applications) may lag the physical state if device event
processing is frozen.
This request overrides all previous grabs by the same client of
the same type and modifier combinations on the same window. A
modifiers of XIAnyModifier is equivalent to issuing the grab
request for all possible modifier combinations (including the
combination of no modifiers). It is not required that all
modifiers specified have currently assigned KeyCodes.
If some other client has already issued a XIGrabEnter or
XIGrabFocusIn on the same window, a BadAccess error results.
When using XIAnyModifier, the request fails completely, and a
XIBadAccess error results (no grabs are established) if there
is a conflicting grab for any combination. XIGrabEnter and
XIGrabFocusin have no effect on an active grab.
On success, XIGrabEnter and XIGrabFocusIn return 0;
If one or more modifier combinations could not be grabbed,
XIGrabEnter and XIGrabFocusIn return the number of failed
combinations and modifiers_inout contains the failed combinations
and their respective status codes.
XIGrabEnter and XIGrabFocusIn can generate BadDevice,
BadMatch, BadValue, and BadWindow errors.
XIUngrabEnter and XIUngrabFocusIn releases the passive grab on
the specified window if it was grabbed by this client. A
modifier of XIAnyModifier is equivalent to issuing the ungrab
request for all possible modifier combinations, including the
combination of no modifiers. XIUngrabEnter and XIUngrabFocusIn
have no effect on an active grab.
XIUngrabEnter and XIUngrabFocusIn can generate BadDevice,
BadMatch, BadValue and BadWindow errors.
RETURN VALUE
------------
XIGrabEnter and XIGrabFocusIn return the number of modifier combination
that could not establish a passive grab. The modifiers are returned in
modifiers_inout, along with the respective error for this modifier
combination. If XIGrabEnter or XIGrabFocusIn return zero, passive grabs
with all requested modifier combinations were established successfully.
DIAGNOSTICS
-----------
BadDevice
An invalid deviceid was specified.
BadMatch
This error may occur if XIGrabEnter specified a device
that has no valuators, or XIGrabFocusIn specified a device
that has no keys.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadWindow
A value for a Window argument does not name a defined
Window.
BUGS
----
The protocol headers for XI 2.0 did not provide
XIGrabModeAsync or XIGrabModeSync. Use GrabModeSync and
GrabModeAsync instead, respectively.
SEE ALSO
--------
XIAllowEvents(libmansuffix)
libXi-1.7.1.901/man/XIGrabEnter.man 0000664 0032045 0000764 00000021504 12116564654 013425 0000000 0000000 '\" t
.\" Title: xigrabenter
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIGRABENTER" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIGrabEnter, XIUngrabEnter, XIGrabFocusIn, XIUngrabFocusIn \- grab/ungrab enter or focus in events\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XIGrabEnter( Display *display,
int deviceid,
Window grab_window,
Cursor cursor,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
.fi
.sp
.nf
int XIUngrabEnter( Display *display,
int deviceid,
Window grab_window
int num_modifiers,
XIGrabModifiers *modifiers);
.fi
.sp
.nf
int XIGrabFocusIn ( Display *display,
int deviceid,
Window grab_window
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
.fi
.sp
.nf
int XIUngrabFocusIn( Display *display,
int deviceid,
Window grab_window
int num_modifiers,
XIGrabModifiers *modifiers);
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device that is to be grabbed or released
.fi
.sp
.nf
num_modifiers
Number of elements in modifiers or modifiers_inout\&.
.fi
.sp
.nf
modifiers
Specifies the set of latched and base modifiers or
XIAnyModifier to ungrab\&. The data type is for
consistency with the respective grab request and the
status code of the XIGrabModifiers struct is ignored\&.
.fi
.sp
.nf
modifiers_inout
Specifies the set of latched and base modifiers or
XIAnyModifier to grab\&. Returns the modifiers that could
not be grabbed and their status code\&.
.fi
.sp
.nf
grab_window
Specifies the grab window\&.
.fi
.sp
.nf
owner_events
Specifies a Boolean value that indicates whether the are
to be reported as usual or reported with respect to the
grab window\&.
.fi
.sp
.nf
mask
Specifies the event mask\&.
.fi
.sp
.nf
grab_mode
Specifies further processing of events from this device\&.
You can pass XIGrabModeSync or XIGrabModeAsync\&.
.fi
.sp
.nf
paired_device_mode
Specifies further processing of events from the paired
master device\&. You can pass XIGrabModeSync or
XIGrabModeAsync\&. If deviceid specifies a floating slave
device, this parameter is ignored\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
XIGrabEnter and XIGrabFocusIn establish a passive grab\&. The
modifier device for a enter grab is the paired master device if
deviceid specifies a master pointer\&. Otherwise, the modifier
device is the device specified with deviceid\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
For XIGrabEnter and XIGrabFocusIn, in the future, the device is
actively grabbed (as for XIGrabDevice, the last\-grab time is
set to the time at which the pointer/focus entered window) if
the device is not grabbed and the pointer has entered the
grab_window or the focus has been set to the grab_window when
the specified modifier keys are logically down on the modifier
device and no other buttons or modifier keys are logically
down\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The interpretation of the remaining arguments is as for
XIGrabDevice\&. The active grab is terminated automatically when
the pointer leaves the window or the focus is set to a
different window (independent of the logical state of the
modifier keys)\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the device is an attached slave device, the device is
automatically detached from the master device when the grab
activates and reattached to the same master device when the
grab deactivates\&. If the master device is removed while the
device is floating as a result of a grab, the device remains
floating once the grab deactivates\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Note that the logical state of a device (as seen by client
applications) may lag the physical state if device event
processing is frozen\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
This request overrides all previous grabs by the same client of
the same type and modifier combinations on the same window\&. A
modifiers of XIAnyModifier is equivalent to issuing the grab
request for all possible modifier combinations (including the
combination of no modifiers)\&. It is not required that all
modifiers specified have currently assigned KeyCodes\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If some other client has already issued a XIGrabEnter or
XIGrabFocusIn on the same window, a BadAccess error results\&.
When using XIAnyModifier, the request fails completely, and a
XIBadAccess error results (no grabs are established) if there
is a conflicting grab for any combination\&. XIGrabEnter and
XIGrabFocusin have no effect on an active grab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
On success, XIGrabEnter and XIGrabFocusIn return 0;
If one or more modifier combinations could not be grabbed,
XIGrabEnter and XIGrabFocusIn return the number of failed
combinations and modifiers_inout contains the failed combinations
and their respective status codes\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIGrabEnter and XIGrabFocusIn can generate BadDevice,
BadMatch, BadValue, and BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIUngrabEnter and XIUngrabFocusIn releases the passive grab on
the specified window if it was grabbed by this client\&. A
modifier of XIAnyModifier is equivalent to issuing the ungrab
request for all possible modifier combinations, including the
combination of no modifiers\&. XIUngrabEnter and XIUngrabFocusIn
have no effect on an active grab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIUngrabEnter and XIUngrabFocusIn can generate BadDevice,
BadMatch, BadValue and BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.SH "RETURN VALUE"
.sp
.if n \{\
.RS 4
.\}
.nf
XIGrabEnter and XIGrabFocusIn return the number of modifier combination
that could not establish a passive grab\&. The modifiers are returned in
modifiers_inout, along with the respective error for this modifier
combination\&. If XIGrabEnter or XIGrabFocusIn return zero, passive grabs
with all requested modifier combinations were established successfully\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid deviceid was specified\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if XIGrabEnter specified a device
that has no valuators, or XIGrabFocusIn specified a device
that has no keys\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
.SH "BUGS"
.sp
.if n \{\
.RS 4
.\}
.nf
The protocol headers for XI 2\&.0 did not provide
XIGrabModeAsync or XIGrabModeSync\&. Use GrabModeSync and
GrabModeAsync instead, respectively\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XIAllowEvents(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIUndefineCursor.man 0000664 0032045 0000764 00000000060 12116564652 014477 0000000 0000000 .so manlibmansuffix/XIDefineCursor.libmansuffix
libXi-1.7.1.901/man/XGetExtensionVersion.txt 0000664 0032045 0000764 00000003046 12110553734 015461 0000000 0000000 XGETEXTENSIONVERSION(libmansuffix)
==================================
NAME
----
XGetExtensionVersion - query the version of the input extension.
SYNOPSIS
--------
#include
XExtensionVersion *XGetExtensionVersion( Display *display,
char *name);
display
Specifies the connection to the X server.
name
Specifies the extension to be queried. The input
extension name is definedin the header file XI.h.
DESCRIPTION
-----------
The XGetExtensionVersion request is deprecated and should not
be used in XI2 applications. Clients issuing a XGetExtensionVersion
request will not be able to use XI2 features.
The XGetExtensionVersion request queries the version of the input
extension, and returns an XExtensionVersion structure. This structure
contains a major_version and minor_version number which can be compared
with constants defined in XI.h. Support for additional protocol
requests added to the input extension after its initial release
is indicated by a version number corresponding to the added
requests. Each version contains all the protocol requests
contained by previous versions.
You should use XFree to free the XExtensionVersion structure.
STRUCTURES
----------
This request returns an XExtensionVersion structure.
typedef struct {
int present;
short major_version;
short minor_version;
} XExtensionVersion;
libXi-1.7.1.901/man/XUngrabDevice.man 0000664 0032045 0000764 00000000055 12116564644 013776 0000000 0000000 .so manlibmansuffix/XGrabDevice.libmansuffix
libXi-1.7.1.901/man/XIGrabButton.man 0000664 0032045 0000764 00000025301 12116564654 013622 0000000 0000000 '\" t
.\" Title: xigrabbutton
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIGRABBUTTON" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIGrabButton, XIUngrabButton, XIGrabKeycode, XIUngrabKeycode, XIGrabTouchBegin, XIUngrabTouchBegin \- grab/ungrab buttons or keys
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
int XIGrabButton( Display *display,
int deviceid,
int button,
Window grab_window,
Cursor cursor,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
.fi
.sp
.nf
int XIUngrabButton( Display *display,
int deviceid,
int button,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers);
.fi
.sp
.nf
int XIGrabKeycode( Display *display,
int deviceid,
int keycode,
Window grab_window,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
.fi
.sp
.nf
int XIUngrabKeycode( Display *display,
int deviceid,
int keycode,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers);
.fi
.sp
.nf
int XIGrabTouchBegin( Display *display,
int deviceid,
Window grab_window,
Bool owner_events,
XIEventMask *mask,
int num_modifiers,
XIGrabModifiers *modifiers_inout);
.fi
.sp
.nf
int XIUngrabTouchBegin( Display *display,
int deviceid,
Window grab_window,
int num_modifiers,
XIGrabModifiers *modifiers);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device that is to be grabbed or released
.fi
.sp
.nf
button
Specifies the device button that is to be grabbed or
released or XIAnyButton\&.
.fi
.sp
.nf
keycode
Specifies the keycode that is to be grabbed or released
or XIAnyKeycode\&.
.fi
.sp
.nf
num_modifiers
Number of elements in modifiers or modifiers_inout\&.
.fi
.sp
.nf
modifiers
Specifies the set of latched and base modifiers or
XIAnyModifier to ungrab\&. The data type is for
consistency with the respective grab request and the
status code of the XIGrabModifiers struct is ignored\&.
.fi
.sp
.nf
modifiers_inout
Specifies the set of latched and base modifiers or
XIAnyModifier to grab\&. Returns the modifiers that could
not be grabbed and their error code\&.
.fi
.sp
.nf
grab_window
Specifies the grab window\&.
.fi
.sp
.nf
owner_events
Specifies a Boolean value that indicates whether the are
to be reported as usual or reported with respect to the
grab window\&.
.fi
.sp
.nf
mask
Specifies the event mask\&.
.fi
.sp
.nf
grab_mode
Specifies further processing of events from this device\&.
You can pass XIGrabModeSync or XIGrabModeAsync\&.
.fi
.sp
.nf
paired_device_mode
Specifies further processing of events from the paired
master device\&. You can pass XIGrabModeSync or
XIGrabModeAsync\&. If deviceid specifies a floating slave
device, this parameter is ignored\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
XIGrabButton, XIGrabKeycode and XIGrabTouchBegin establish a passive
grab\&. The modifier device for a button grab is the paired master device
if deviceid specifies a master pointer\&. Otherwise, the modifier
device is the device specified with deviceid\&. In the future,
the device is actively grabbed (as for XIGrabDevice, the
last\-grab time is set to the time at which the button or keycode
was pressed and the XI_ButtonPress or XI_KeyPress event is
reported if all of the following conditions are true:
* The device is not grabbed, and the specified button or
keycode is logically pressed or a touch event occurs when the
specified modifier keys are logically down on the modifier device
and no other buttons or modifier keys are logically down\&.
* Either the grab window is an ancestor of (or is) the focus
window, OR the grab window is a descendent of the focus
window and contains the device\&.
* A passive grab on the same button/modifier combination does
not exist on any ancestor of grab_window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The interpretation of the remaining arguments is as for
XIGrabDevice\&. The active grab is terminated automatically when
the logical state of the device has all buttons or keys
released (independent of the logical state of the modifier
keys)\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the device is an attached slave device, the device is
automatically detached from the master device when the grab
activates and reattached to the same master device when the
grab deactivates\&. If the master device is removed while the
device is floating as a result of a grab, the device remains
floating once the grab deactivates\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Note that the logical state of a device (as seen by client
applications) may lag the physical state if device event
processing is frozen\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
This request overrides all previous grabs by the same client on
the same button/modifier or keycode/modifier combinations on the
same window\&. A modifiers of XIAnyModifier is equivalent to
issuing the grab request for all possible modifier combinations
(including the combination of no modifiers)\&. It is not required
that all modifiers specified have currently assigned KeyCodes\&.
A button of XIAnyButton is equivalent to issuing the request
for all possible buttons\&. Otherwise, it is not required that
the specified button currently be assigned to a physical
button\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If some other client has already issued a XIGrabButton or
XIGrabKeycode with the same button/modifier or keycode/modifier
combination on the same window, a BadAccess error results\&. When
using XIAnyModifier or XIAnyButton , the request fails
completely, and a XIBadAccess error results (no grabs are
established) if there is a conflicting grab for any
combination\&. XIGrabButton and XIGrabKeycode have no effect on an
active grab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
On success, XIGrabButton, XIGrabKeycode and XIGrabTouchBegin return 0;
If one or more modifier combinations could not be grabbed,
XIGrabButton, XIGrabKeycode and XIGrabTouchBegin return the number of
failed combinations and modifiers_inout contains the failed combinations
and their respective error codes\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIGrabButton, XIGrabKeycode and XIGrabTouchBegin can generate BadClass,
BadDevice, BadMatch, BadValue, and BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIUngrabButton, XIUngrabKeycode and XIUngrabTouchBegin release the
passive grab for a button/modifier, keycode/modifier or touch/modifier
combination on the specified window if it was grabbed by this client\&. A
modifier of XIAnyModifier is equivalent to issuing the ungrab request
for all possible modifier combinations, including the
combination of no modifiers\&. A button of XIAnyButton is
equivalent to issuing the request for all possible buttons\&.
XIUngrabButton and XIUngrabKeycode have no effect on an active
grab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIUngrabButton, XIUngrabKeycode and XIUngrabTouchBegin can generate
BadDevice, BadMatch, BadValue and BadWindow errors\&.
.fi
.if n \{\
.RE
.\}
.SH "RETURN VALUE"
.sp
.if n \{\
.RS 4
.\}
.nf
XIGrabButton, XIGrabKeycode and XIGrabTouchBegin return the number of
modifier combination that could not establish a passive grab\&. The
modifiers are returned in modifiers_inout, along with the respective
error for this modifier combination\&. If XIGrabButton, XIGrabKeycode
or XIGrabTouchBegin return zero, passive grabs with all requested
modifier combinations were established successfully\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid deviceid was specified\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if XIGrabButton specified a device
that has no buttons, or XIGrabKeycode specified a device
that has no keys, or XIGrabTouchBegin specified a device
that is not touch\-capable\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
Some numeric value falls outside the range of values
accepted by the request\&. Unless a specific range is
specified for an argument, the full range defined by the
argument\*(Aqs type is accepted\&. Any argument defined as a
set of alternatives can generate this error\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
.SH "BUGS"
.sp
.if n \{\
.RS 4
.\}
.nf
The protocol headers for XI 2\&.0 did not provide
XIGrabModeAsync or XIGrabModeSync\&. Use GrabModeSync and
GrabModeAsync instead, respectively\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XIAllowEvents(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XFreeDeviceList.man 0000664 0032045 0000764 00000000063 12116564646 014276 0000000 0000000 .so manlibmansuffix/XListInputDevices.libmansuffix
libXi-1.7.1.901/man/XSetDeviceValuators.man 0000664 0032045 0000764 00000007065 12116564652 015223 0000000 0000000 '\" t
.\" Title: xsetdevicevaluators
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XSETDEVICEVALUATORS" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XSetDeviceValuators \- initialize the valuators on an extension input device
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XSetDeviceValuators( Display *display,
XDevice *device,
int *valuators,
int first_valuator,
int num_valuators);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
device
Specifies the device whose valuators are to be
initialized\&.
.fi
.sp
.nf
valuators
Specifies a pointer to an array of integer values to be
used to initialize thedevice valuators\&.
.fi
.sp
.nf
first_valuator
Specifies the first valuator to be set\&. Valuators are
numbered beginning withzero\&.
.fi
.sp
.nf
num_valuators
Specifies the number of valuators to be set\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XSetDeviceValuators request sets the current values of the
valuators of an input device\&. The valuators in the range
first_valuator to (first_valuator + num_valuators) are set to
the specified values\&. Valuators are numbered beginning with 0\&.
Not all input devices support initialization of valuator
values\&. If this request is made to a device that does not
support valuators initialization, a BadMatch error will occur\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the request succeeds, a status of Success is returned\&. If
another client has the device grabbed, a status of
AlreadyGrabbed is returned\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XSetDeviceValuators can generate a BadLength, BadDevice,
BadMatch, or BadValue error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
This error may occur if an XSetDeviceValuators request
is made specifying a device that has no valuators and
reports no axes of motion, or if such a request is made
specifying a device that does not support valuator
initialization\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
An invalid first_valuator or num_valuators values was
specified\&.
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XISelectEvents.txt 0000664 0032045 0000764 00000005577 12110553734 014227 0000000 0000000 XISELECTEVENTS(libmansuffix)
============================
NAME
----
XISelectEvents, XIGetSelectedEvents - select for or get selected XI2 events on the window.
SYNOPSIS
--------
#include
Status XISelectEvents( Display *display,
Window win,
XIEventMask *masks,
int num_masks);
display
Specifies the connection to the X server.
masks
Device event mask.
num_masks
Number of masks in masks.
win
Specifies the window.
XIEventMask *XIGetSelectedEvents( Display *display,
Window win,
int *num_masks_return);
display
Specifies the connection to the X server.
num_masks_return
Number of masks in the return value.
win
Specifies the window.
DESCRIPTION
-----------
XI2 events must be selected using XISelectEvents.
XISelectEvents sets the event mask for this client on win.
Further events are only reported to this client if the event
type matches the selected event mask. The masks overrides the
previously selected event mask for the given device.
If deviceid is a valid device, the event mask is selected only
for this device. If deviceid is XIAllDevices or
XIAllMasterDevices, the event mask is selected for all devices
or all master devices, respectively. The effective event mask
is the bit-wise OR of the XIAllDevices, XIAllMasterDevices and
the respective device's event mask.
typedef struct {
int deviceid;
int mask_len;
unsigned char* mask;
} XIEventMask;
The mask_len specifies the length of mask in bytes. mask is a
binary mask in the form of (1 << event type). deviceid must be
either a device or XIAllDevices or XIAllMasterDevices. A client
may submit several masks with the same deviceid in one request
but only the last mask will be effective.
XISelectEvents can generate a BadValue, a BadDevice, and a
BadWindow error.
XIGetSelectedEvents returns the events selected by this client on the given
window. If no events were selected on this window, XIGetSelectedEvents
returns NULL and num_masks_return is set to 0. If an internal error occurs,
XIGetSelectedEvents returns NULL and num_masks_return is set to -1.
Otherwise, XIGetSelectedEvent returns the selected event masks for all
devices including the masks for XIAllDevices and XIAllMasterDevices
The caller must free the returned data using XFree().
DIAGNOSTICS
-----------
BadValue
A value is outside of the permitted range.
BadWindow
A value for a Window argument does not name a defined
window.
BadDevice
An invalid device was specified. The device does not
exist.
libXi-1.7.1.901/man/XIGrabDevice.man 0000664 0032045 0000764 00000016026 12116564654 013552 0000000 0000000 '\" t
.\" Title: xigrabdevice
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.77.1
.\" Date: 03/09/2013
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XIGRABDEVICE" "libmansuffix" "03/09/2013" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XIGrabDevice, XIUngrabDevice \- grab or ungrab the device\&.
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
Status XIGrabDevice( Display *display,
int deviceid,
Window grab_window,
Time time,
Cursor cursor,
int grab_mode,
int paired_device_mode,
Bool owner_events,
XIEventMask *mask);
.fi
.sp
.nf
Status XIUngrabDevice( Display *display,
int deviceid,
Time time);
.fi
.sp
.nf
cursor
Specifies the cursor image to display for the duration
of the grab\&.
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
deviceid
Specifies the device that should be grabbed or
ungrabbed\&.
.fi
.sp
.nf
grab_mode, paired_device_mode
The grab mode for this device and (if applicable) the
paired device\&.
.fi
.sp
.nf
grab_window
The grab window\&.
.fi
.sp
.nf
mask
Event mask\&.
.fi
.sp
.nf
owner_events
True if events are to be reported normally\&.
.fi
.sp
.nf
time
A valid timestamp or CurrentTime\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
XIGrabDevice actively grabs control of the device\&. Further
device events are reported only to the grabbing client\&.
XIGrabDevice overrides any active device grab by this client\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the device is an attached slave device, the device is
automatically detached from the master device and reattached to
the same master device when client ungrabs the device\&. If the
master device is removed while the device is floating as a
result of a grab, the device remains floating once the grab
deactivates\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If owner_events is False, all generated device events are
reported with respect to grab_window if selected\&. If
owner_events is True and if a generated device event would
normally be reported to this client, it is reported normally;
otherwise, the event is reported with respect to the
grab_window, and is only reported if specified in the event
mask\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the grab_mode argument is XIGrabModeAsync, device event
processing continues as usual\&. If the device is currently
frozen by this client, then processing of device events is
resumed\&. If the grab_mode argument is XIGrabModeSync, the state
of the device (as seen by client applications) appears to
freeze, and the X server generates no further device events
until the grabbing client issues a releasing XIAllowEvents call
or until the device grab is released\&. Actual device changes are
not lost while the device is frozen; they are simply queued in
the server for later processing\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If paired_device_mode is XIGrabModeAsync, processing of events
from the paired master device is unaffected by activation of
the grab\&. If paired_device_mode is XIGrabModeSync, the state of
the paired master device (as seen by client applications)
appears to freeze, and the X server generates no further events
from this device until the grabbing client issues a releasing
XIAllowEvents call or until the device grab is released\&. Actual
events are not lost while the devices are frozen; they are
simply queued in the server for later processing\&. If the device
is a slave device paired_device_mode is ignored\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If the device is actively grabbed by some other client,
XIGrabDevice fails and returns AlreadyGrabbed\&. If grab_window
is not viewable, it fails and returns GrabNotViewable\&. If the
device is frozen by an active grab of another client, it fails
and returns GrabFrozen\&. If the specified time is earlier than
the last\-device\-grab time or later than the current X server
time, it fails and returns GrabInvalidTime\&. Otherwise, the
last\-device\-grab time is set to the specified time\&. CurrentTime
is replaced by the current X server time\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
If cursor is not None this cursor is displayed until the client
calls XIUngrabDevice\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIGrabDevice can generate BadDevice, BadValue, and BadWindow
errors\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The XIUngrabDevice request releases the device and any queued
events if this client has it actively grabbed from either
XIGrabDevice or XIGrabKey or XIGrabButton\&. If other devices are
frozen by the grab, XUngrabDevice thaws them\&. XUngrabDevice
does not release the device and any queued events if the
specified time is earlier than the last\-device\-grab time or is
later than the current X server time\&. The X server
automatically performs an XIUngrabDevice request if the event
window for an active device grab becomes not viewable\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XIUngrabDevice can generate a BadDevice error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadValue
A value is outside of the permitted range\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadDevice
An invalid device was specified\&. The device does not
exist or is not a appropriate for the type of change\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadMatch
The window is not viewable\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
Window\&.
.fi
.if n \{\
.RE
.\}
.SH "BUGS"
.sp
.if n \{\
.RS 4
.\}
.nf
The protocol headers for XI 2\&.0 did not provide
XIGrabModeAsync or XIGrabModeSync\&. Use GrabModeSync and
GrabModeAsync instead, respectively\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
.if n \{\
.RS 4
.\}
.nf
XIAllowEvents(libmansuffix)
.fi
.if n \{\
.RE
.\}
libXi-1.7.1.901/man/XIDeleteProperty.man 0000664 0032045 0000764 00000000062 12116564660 014514 0000000 0000000 .so manlibmansuffix/XIChangeProperty.libmansuffix
libXi-1.7.1.901/man/XIUngrabButton.man 0000664 0032045 0000764 00000000056 12116564654 014165 0000000 0000000 .so manlibmansuffix/XIGrabButton.libmansuffix
libXi-1.7.1.901/man/XGrabDevice.txt 0000664 0032045 0000764 00000014101 12110553734 013464 0000000 0000000 XGRABDEVICE(libmansuffix)
=========================
NAME
----
XGrabDevice, XUngrabDevice - grab/release the specified
extension device
SYNOPSIS
--------
#include
int XGrabDevice( Display *display,
XDevice* device,
Window grab_window,
Bool owner_events,
int event_count,
XEventClass *event_list,
int this_device_mode,
int other_devices_mode,
Time time);
int XUngrabDevice( Display *display,
XDevice *device,
Time time);
display
Specifies the connection to the X server.
device
Specifies the device to be grabbed or released.
grab_window
Specifies the id of a window to be associated with the
device.
owner_events
Specifies a Boolean value that indicates whether
theevents from the deviceare to be reported as usual or
reported with respect to the grab windowif selected by
the event list.
event_count
Specifies the number of elements in the event_list
array.
event_list
Specifies a pointer to a list of event classes that
indicates which eventsthe client wishes to receive.
These event classes must have beenobtained specifying
the device being grabbed.
this_device_mode
Specifies further processing of events from this
device.You can pass GrabModeSyncor GrabModeAsync.
other_devices_mode
Specifies further processing of events from other
devices.You can pass GrabModeSyncor GrabModeAsync.
time
Specifies the time.You can pass either a timestamp or
CurrentTime.
DESCRIPTION
-----------
The XGrabDevice request actively grabs control of the device
and generates DeviceFocusIn and DeviceFocusOut events. Further
device events are reported only to the grabbing
client.XGrabDevice overrides any active device grab by this
client. event_list is a pointer to a list of event classes.
This list indicates which events the client wishes to receive
while the grab is active. If owner_events is False, all
generated device events are reported with respect to
grab_window if selected. If owner_events is True and if a
generated device event would normally be reported to this
client, it is reported normally; otherwise, the event is
reported with respect to the grab_window, and is only reported
if specified in the event_list.
If the this_device_mode argument is GrabModeAsync, device event
processing continues as usual. If the device is currently
frozen by this client, then processing of device events is
resumed. If the this_device_mode argument is GrabModeSync, the
state of the device (as seen by client applications) appears to
freeze, and the X server generates no further device events
until the grabbing client issues a releasing XAllowDeviceEvents
call or until the device grab is released. Actual device
changes are not lost while the device is frozen; they are
simply queued in the server for later processing.
If other_devices_mode is GrabModeAsync, processing of events
from other devices is unaffected by activation of the grab. If
other_devices_mode is GrabModeSync, the state of all devices
except the grabbed device (as seen by client applications)
appears to freeze, and the X server generates no further events
from those devices until the grabbing client issues a releasing
XAllowDeviceEvents call or until the device grab is released.
Actual events are not lost while the devices are frozen; they
are simply queued in the server for later processing.
If the device is actively grabbed by some other client,
XGrabDevice fails and returns AlreadyGrabbed. If grab_window is
not viewable, it fails and returns GrabNotViewable. If the
device is frozen by an active grab of another client, it fails
and returns GrabFrozen. If the specified time is earlier than
the last-device-grab time or later than the current X server
time, it fails and returns GrabInvalidTime. Otherwise, the
last-device-grab time is set to the specified time (
CurrentTime is replaced by the current X server time).
If a grabbed device is closed by a client while an active grab
by that client is in effect, the active grab is released. If
the device is frozen only by an active grab of the requesting
client, it is thawed.
XGrabDevice can generate BadClass, BadDevice, BadValue, and
BadWindow errors.
The XUngrabDevice request releases the device and any queued
events if this client has it actively grabbed from either
XGrabDevice or XGrabDeviceKey. If other devices are frozen by
the grab, XUngrabDevice thaws them.XUngrabDevice does not
release the device and any queued events if the specified time
is earlier than the last-device-grab time or is later than the
current X server time. It also generates DeviceFocusIn and
DeviceFocusOut events. The X server automatically performs an
UngrabDevice request if the event window for an active device
grab becomes not viewable.
XUngrabDevice can generate a BadDevice error.
DIAGNOSTICS
-----------
BadDevice
An invalid device was specified. The specified device
does not exist or has not been opened by this client via
XOpenInputDevice. This error may also occur if the
specified device is the X keyboard or X pointer device.
BadValue
Some numeric value falls outside the range of values
accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the
argument's type is accepted. Any argument defined as a
set of alternatives can generate this error.
BadWindow
A value for a Window argument does not name a defined
Window.
SEE ALSO
--------
XAllowDeviceEvents(libmansuffix), XGrabDeviceButton(libmansuffix), XGrabDeviceKey(libmansuffix)
libXi-1.7.1.901/man/XIGetClientPointer.man 0000664 0032045 0000764 00000000064 12116564656 014773 0000000 0000000 .so manlibmansuffix/XISetClientPointer.libmansuffix
libXi-1.7.1.901/ChangeLog 0000664 0032045 0000764 00000455735 12162670017 011626 0000000 0000000 commit 957a9d64afd76f878ce6c5570f369e2a7fc1e772
Author: Peter Hutterer
Date: Thu Jun 27 08:47:16 2013 +1000
libXi 1.7.1.901
Signed-off-by: Peter Hutterer
commit 62033a9c83bcdc75b9f1452ce24729eefa8f4dc0
Author: Peter Hutterer
Date: Thu Jun 27 06:25:02 2013 +1000
Include limits.h to prevent build error: missing INT_MAX
Introduced in 4c8e9bcab459ea5f870d3e56eff15f931807f9b7.
Signed-off-by: Peter Hutterer
commit 0f3f5a36d5fc6dc53f69f48a0c83aef6a1fcf381
Author: Peter Hutterer
Date: Tue May 28 15:52:34 2013 +1000
If the XGetDeviceDontPropagateList reply has an invalid length, return 0
If we skip over the reply data, return 0 as number of event classes.
Follow-up to 6dd6dc51a2935c72774be81e5cc2ba2c30e9feff.
Signed-off-by: Peter Hutterer
commit 35ae16dc2f16b24a22625b2d9f76a2128b673a6c
Author: Peter Hutterer
Date: Tue May 28 15:52:33 2013 +1000
Change size += to size = in XGetDeviceControl
size += blah is technically correct but it implies that we're looping or
otherwise incrementing the size. Which we don't, it's only ever set once.
Change this to avoid reviewer confusion.
Reported-by: Dave "color-me-confused" Airlie
Signed-off-by: Peter Hutterer
commit 4c8e9bcab459ea5f870d3e56eff15f931807f9b7
Author: Peter Hutterer
Date: Tue May 28 15:52:32 2013 +1000
Fix potential corruption in mask_len handling
First: check for allocation failure on the mask.
XI2 requires that the mask is zeroed, so we can't just Data() the mask
provided by the client (it will pad) - we need a tmp buffer. Make sure that
doesn't fail.
Second:
req->mask_len is a uint16_t, so check against malicious mask_lens that would
cause us to corrupt memory on copy, as the code always allocates
req->mask_len * 4, but copies mask->mask_len bytes.
Signed-off-by: Peter Hutterer
commit 661c45ca17c434dbd342a46fd3fb813852ae0ca9
Author: Peter Hutterer
Date: Tue May 21 12:23:05 2013 +1000
Don't overwrite the cookies serial number
serial != sequenceNumber, see _XSetLastRequestRead()
cookie->serial is already set at this point, setting it again directly from
the sequenceNumber of the event causes a bunch of weird issues such as
scrollbars and text drag-n-drop breaking.
https://bugzilla.redhat.com/show_bug.cgi?id=965347
Signed-off-by: Peter Hutterer
commit 81b4df8ac6aa1520c41c3526961014a6f115cc46
Author: Alan Coopersmith
Date: Sun Mar 10 00:16:22 2013 -0800
sign extension issue in XListInputDevices() [CVE-2013-1995]
nptr is (signed) char, which can be negative, and will sign extend
when added to the int size, which means size can be subtracted from,
leading to allocating too small a buffer to hold the data being copied
from the X server's reply.
v2: check that string size fits inside the data read from the server,
so that we don't read out of bounds either
Reported-by: Ilja Van Sprundel
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit ef82512288d8ca36ac0beeb289f158195b0a8cae
Author: Alan Coopersmith
Date: Sun Mar 10 00:22:14 2013 -0800
Avoid integer overflow in XListInputDevices() [CVE-2013-1984 8/8]
If the length of the reply as reported by the Xserver is too long, it
could overflow the calculation for the size of the buffer to copy the
reply into, causing memory corruption.
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 17071c1c608247800b2ca03a35b1fcc9c4cabe6c
Author: Alan Coopersmith
Date: Sun Mar 10 13:30:55 2013 -0700
Avoid integer overflow in XGetDeviceProperties() [CVE-2013-1984 7/8]
If the number of items as reported by the Xserver is too large, it
could overflow the calculation for the size of the buffer to copy the
reply into, causing memory corruption.
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 528419b9ef437e7eeafb41bf45e8ff7d818bd845
Author: Alan Coopersmith
Date: Sat Mar 9 22:55:23 2013 -0800
integer overflow in XIGetSelectedEvents() [CVE-2013-1984 6/8]
If the number of events or masks reported by the server is large enough
that it overflows when multiplied by the size of the appropriate struct,
or the sizes overflow as they are totaled up, then memory corruption can
occur when more bytes are copied from the X server reply than the size
of the buffer we allocated to hold them.
v2: check that reply size fits inside the data read from the server,
so that we don't read out of bounds either
Reported-by: Ilja Van Sprundel
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 242f92b490a695fbab244af5bad11b71f897c732
Author: Alan Coopersmith
Date: Sat Mar 9 22:55:23 2013 -0800
integer overflow in XIGetProperty() [CVE-2013-1984 5/8]
If the number of items reported by the server is large enough that
it overflows when multiplied by the size of the appropriate item type,
then memory corruption can occur when more bytes are copied from the
X server reply than the size of the buffer we allocated to hold them.
Reported-by: Ilja Van Sprundel
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit bb922ed4253b35590f0369f32a917ff89ade0830
Author: Alan Coopersmith
Date: Sat Mar 9 22:55:23 2013 -0800
integer overflow in XGetDeviceMotionEvents() [CVE-2013-1984 4/8]
If the number of events or axes reported by the server is large enough
that it overflows when multiplied by the size of the appropriate struct,
then memory corruption can occur when more bytes are copied from the
X server reply than the size of the buffer we allocated to hold them.
Reported-by: Ilja Van Sprundel
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 6dd6dc51a2935c72774be81e5cc2ba2c30e9feff
Author: Alan Coopersmith
Date: Sat Mar 9 22:55:23 2013 -0800
integer overflow in XGetDeviceDontPropagateList() [CVE-2013-1984 3/8]
If the number of event classes reported by the server is large enough
that it overflows when multiplied by the size of the appropriate struct,
then memory corruption can occur when more bytes are copied from the
X server reply than the size of the buffer we allocated to hold them.
V2: EatData if count is 0 but length is > 0 to avoid XIOErrors
Reported-by: Ilja Van Sprundel
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 322ee3576789380222d4403366e4fd12fb24cb6a
Author: Alan Coopersmith
Date: Sat Mar 9 22:55:23 2013 -0800
integer overflow in XGetFeedbackControl() [CVE-2013-1984 2/8]
If the number of feedbacks reported by the server is large enough that
it overflows when multiplied by the size of the appropriate struct, or
if the total size of all the feedback structures overflows when added
together, then memory corruption can occur when more bytes are copied from
the X server reply than the size of the buffer we allocated to hold them.
v2: check that reply size fits inside the data read from the server, so
we don't read out of bounds either
Reported-by: Ilja Van Sprundel
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit b0b13c12a8079a5a0e7f43b2b8983699057b2cec
Author: Alan Coopersmith
Date: Sat Mar 9 22:55:23 2013 -0800
integer overflow in XGetDeviceControl() [CVE-2013-1984 1/8]
If the number of valuators reported by the server is large enough that
it overflows when multiplied by the size of the appropriate struct, then
memory corruption can occur when more bytes are copied from the X server
reply than the size of the buffer we allocated to hold them.
v2: check that reply size fits inside the data read from the server, so
we don't read out of bounds either
Reported-by: Ilja Van Sprundel
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 5398ac0797f7516f2c9b8f2869a6c6d071437352
Author: Alan Coopersmith
Date: Fri Apr 26 22:48:36 2013 -0700
unvalidated lengths in XQueryDeviceState() [CVE-2013-1998 3/3]
If the lengths given for each class state in the reply add up to more
than the rep.length, we could read past the end of the buffer allocated
to hold the data read from the server.
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 91434737f592e8f5cc1762383882a582b55fc03a
Author: Alan Coopersmith
Date: Sat Mar 9 23:37:23 2013 -0800
memory corruption in _XIPassiveGrabDevice() [CVE-2013-1998 2/3]
If the server returned more modifiers than the caller asked for,
we'd just keep copying past the end of the array provided by the
caller, writing over who-knows-what happened to be there.
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit f3e08e4fbe40016484ba795feecf1a742170ffc1
Author: Alan Coopersmith
Date: Sat Mar 9 22:26:52 2013 -0800
Stack buffer overflow in XGetDeviceButtonMapping() [CVE-2013-1998 1/3]
We copy the entire reply sent by the server into the fixed size
mapping[] array on the stack, even if the server says it's a larger
size than the mapping array can hold. HULK SMASH STACK!
Reported-by: Ilja Van Sprundel
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 59b8e1388a687f871831ac5a9e0ac11de75e2516
Author: Alan Coopersmith
Date: Wed May 1 23:58:39 2013 -0700
Use _XEatDataWords to avoid overflow of rep.length bit shifting
rep.length is a CARD32, so rep.length << 2 could overflow in 32-bit builds
Signed-off-by: Alan Coopersmith
Reviewed-by: Peter Hutterer
commit 5d43d4914dcabb6de69859567061e99300e56ef4
Author: Peter Hutterer
Date: Fri May 17 09:07:44 2013 +1000
Copy the sequence number into the target event too (#64687)
X.Org Bug 64687
Signed-off-by: Peter Hutterer
Reviewed-by: Jasper St. Pierre
commit bb82c72a1d69eaf60b7586570faf797df967f661
Author: Alan Coopersmith
Date: Mon Apr 29 18:39:34 2013 -0700
Expand comment on the memory vs. reply ordering in XIGetSelectedEvents()
Unpacking from the wire involves un-interleaving the structs & masks,
which wasn't obvious to me the first time I read it, so make notes
before I forget again.
Signed-off-by: Alan Coopersmith
Signed-off-by: Peter Hutterer
commit 26cb4573cbb8808ce9d5c75c16bd613b2f03a368
Author: Peter Hutterer
Date: Fri Apr 5 09:34:48 2013 +1000
libXi 1.7.1
Signed-off-by: Peter Hutterer
commit 0358bb20384b759d6d41dc44f3aed30583689d53
Author: Peter Hutterer
Date: Tue Mar 26 14:46:06 2013 +1000
Require XFixes for PointerBarrier, remove duplicate typedef
The PointerBarrier typedef is duplicate if a client includes both Xfixes.h
and XInput2.h.
gcc 4.6 won't complain about that, but earlier versions do:
http://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=ce3765bf44e49ef0568a1ad4a0b7f807591d6412
gcc 4.6 with -pedantic-errors shows:
/opt/xorg/include/X11/extensions/XInput2.h:172:13: error: redefinition of
typedef ‘PointerBarrier’ [-pedantic]
In file included from test.c:1:0:
/opt/xorg/include/X11/extensions/Xfixes.h:255:13: note: previous declaration
of ‘PointerBarrier’ was here
Signed-off-by: Peter Hutterer
Reviewed-by: Julien Cristau
commit 081e06492c0ffd003d4a0c34418c882332e58ac3
Author: Peter Hutterer
Date: Thu Mar 7 11:16:02 2013 +1000
libXi 1.7
Signed-off-by: Peter Hutterer
commit 9b26b81477cf3486e5aa0ef8d81af68a0f04df1b
Author: Colin Walters
Date: Wed Jan 4 17:37:06 2012 -0500
autogen.sh: Implement GNOME Build API
http://people.gnome.org/~walters/docs/build-api.txt
Signed-off-by: Adam Jackson
commit fb67e7c99b8e95fa667b90837d312a98fa0a8a64
Author: Adam Jackson
Date: Tue Jan 15 14:28:48 2013 -0500
configure: Remove AM_MAINTAINER_MODE
Signed-off-by: Adam Jackson
commit 236be512c81b76dad711bec481e2139584006c4c
Author: Benjamin Tissoires
Date: Mon Jan 14 18:32:05 2013 +0100
Add missing XI_RawTouch* in XInputCopyCookie
Looks like XI_RawTouch* events are missing in the big switch in this function.
When running XIT tests for multitouch devices, several following errors appears:
XInputCopyCookie: Failed to copy evtype 22
XInputCopyCookie: Failed to copy evtype 23
XInputCopyCookie: Failed to copy evtype 24
Signed-off-by: Benjamin Tissoires
Signed-off-by: Peter Hutterer
commit db3b9ba3404f6d128e7826aa489a34fd206b20ea
Author: Peter Hutterer
Date: Wed Dec 26 15:29:43 2012 +1000
libXi 1.6.99.1
Signed-off-by: Peter Hutterer
commit af9f26510d87eee71f1cd688d7dcfbf173c13943
Merge: 31c6cf9 9e8a55d
Author: Peter Hutterer
Date: Mon Dec 17 14:34:53 2012 +1000
Merge branch 'barriers'
commit 9e8a55dfcb3dc2b42cd7e08e8e6e65ea1dd54251
Author: Peter Hutterer
Date: Fri Dec 7 15:47:41 2012 +1000
man: add man-page for XIBarrierReleasePointer
Signed-off-by: Peter Hutterer
commit 60d7386a1b98cc7760d55d6df1f90e6259d122fa
Author: Jasper St. Pierre
Date: Thu Nov 1 17:00:19 2012 -0400
Add support for pointer barrier events
Signed-off-by: Jasper St. Pierre
Signed-off-by: Peter Hutterer
commit f694bd3fcf38213ae787a3ebe4e8b2df8b2dcdc7
Author: Peter Hutterer
Date: Fri Dec 7 14:39:50 2012 +1000
Bump to 1.6.99
Signed-off-by: Peter Hutterer
commit 31c6cf9f6fbcc7e90e3d6b7927664cbe54e27edf
Author: Peter Hutterer
Date: Thu Dec 6 10:38:16 2012 +1000
Fix const compiler warnings
XExtInt.c:80:38: warning: initialization discards 'const' qualifier from
pointer target type [enabled by default]
XExtInt.c:150:5: warning: initialization discards 'const' qualifier from
pointer target type [enabled by default]
XExtInt.c:151:5: warning: initialization discards 'const' qualifier from
pointer target type [enabled by default]
XExtInt.c:152:5: warning: initialization discards 'const' qualifier from
pointer target type [enabled by default]
XExtInt.c:153:5: warning: initialization discards 'const' qualifier from
pointer target type [enabled by default]
XExtInt.c:154:5: warning: initialization discards 'const' qualifier from
pointer target type [enabled by default]
Signed-off-by: Peter Hutterer
Reviewed-by: Dan Nicholson
commit b4e07e7acc84f68ed2d37557d64d5655cc262ed5
Author: Peter Hutterer
Date: Thu Dec 6 10:27:35 2012 +1000
Fix compiler warnings
XIQueryVersion.c: In function '_xiQueryVersion':
XIQueryVersion.c:63:26: warning: declaration of 'info' shadows a parameter
[-Wshadow]
XIQueryVersion.c:53:73: warning: shadowed declaration is here [-Wshadow]
XExtInt.c: In function 'XInputWireToEvent':
XExtInt.c:823:25: warning: declaration of 'i' shadows a previous local
[-Wshadow]
XExtInt.c:502:18: warning: shadowed declaration is here [-Wshadow]
XExtInt.c:850:25: warning: declaration of 'i' shadows a previous local
[-Wshadow]
XExtInt.c:502:18: warning: shadowed declaration is here [-Wshadow]
In file included from XExtInt.c:64:0:
../include/X11/extensions/XInput.h:166:17: note: previous declaration of
'_xidevicebusy' was here
XExtInt.c:101:12: warning: redundant redeclaration of
'_XiGetDevicePresenceNotifyEvent' [-Wredundant-decls]
XExtInt.c:76:13: warning: redundant redeclaration of '_xibaddevice'
[-Wredundant-decls]
In file included from XExtInt.c:64:0:
../include/X11/extensions/XInput.h:162:17: note: previous declaration of
'_xibaddevice' was here
XExtInt.c:81:13: warning: redundant redeclaration of '_xibadclass'
[-Wredundant-decls]
In file included from XExtInt.c:64:0:
../include/X11/extensions/XInput.h:163:17: note: previous declaration of
'_xibadclass' was here
XExtInt.c:86:13: warning: redundant redeclaration of '_xibadevent'
[-Wredundant-decls]
In file included from XExtInt.c:64:0:
../include/X11/extensions/XInput.h:164:17: note: previous declaration of
'_xibadevent' was here
XExtInt.c:91:13: warning: redundant redeclaration of '_xibadmode'
[-Wredundant-decls]
In file included from XExtInt.c:64:0:
../include/X11/extensions/XInput.h:165:17: note: previous declaration of
'_xibadmode' was here
XExtInt.c:96:13: warning: redundant redeclaration of '_xidevicebusy'
[-Wredundant-decls]
In file included from XExtInt.c:64:0:
../include/X11/extensions/XInput.h:166:17: note: previous declaration of
'_xidevicebusy' was here
XListDev.c: In function 'ParseClassInfo':
XListDev.c:116:33: warning: declaration of 'k' shadows a previous local
[-Wshadow]
XListDev.c:109:12: warning: shadowed declaration is here [-Wshadow]
XGetFCtl.c: In function 'XGetFeedbackControl':
XGetFCtl.c:184:26: warning: declaration of 'i' shadows a previous local
[-Wshadow]
XGetFCtl.c:72:17: warning: shadowed declaration is here [-Wshadow]
Signed-off-by: Peter Hutterer
Reviewed-by: Dan Nicholson
commit 845550471fcd95d77e8d738ab8798d8e6e568b4a
Author: Peter Hutterer
Date: Wed Nov 7 08:51:23 2012 +1000
man: add generation of missing man pages for XIGrabTouchBegin
The man page itself already contained the description, but it was missing
from NAME so the shadow man pages were not generated.
Signed-off-by: Peter Hutterer
Reviewed-by: Chase Douglas
commit 8c0eb1b6b4017b1e886981dc32cea90f2d4b9b64
Author: Peter Hutterer
Date: Thu Oct 11 13:33:45 2012 +1000
man: fix formatting issues in XGetDeviceControl(3)
Signed-off-by: Peter Hutterer
commit ae163b6202d844a46541928d00049b29cbdf930f
Author: Peter Hutterer
Date: Thu May 3 16:01:35 2012 +1000
libXi 1.6.1
Signed-off-by: Peter Hutterer
commit fd5e000308925f703ecd15c288127ab33a456425
Author: Peter Hutterer
Date: Mon Apr 23 13:32:59 2012 +1000
man: update XIQueryVersion for current server behaviour
XIQueryVersion(v1);
XIQueryVersion(v2);
is now ok as long as v1 <= v2.
Signed-off-by: Peter Hutterer
Reviewed-by: Jeremy Huddleston
commit f8f44f42eb543ecd944a84facba6c09bf48e7711
Author: Chase Douglas
Date: Fri Apr 20 15:30:30 2012 -0700
Destroy extension record after last display is removed
The extension record is currently leaked and never freed.
Signed-off-by: Chase Douglas
Signed-off-by: Peter Hutterer
commit 2ac185d2fd2b884f4f59a7f7f61f414d139859aa
Author: Peter Hutterer
Date: Mon Mar 26 09:07:34 2012 +1000
Set the RawEvent sourceid (#34240)
XI 2.2 and later include the sourceid in raw events.
X.Org Bug 34240
Signed-off-by: Peter Hutterer
Reviewed-by: Chase Douglas
commit dfc101e4c6cdac4ff9a51732b2754287fbdc8582
Author: Peter Hutterer
Date: Mon Mar 26 09:05:24 2012 +1000
Move version comparison into a helper function.
No functional changes, this simply introduces a version helper function that
returns -1, 0 or 1 depending on the version comparison result. To be used
internally only.
Needed for fix to #34240
Signed-off-by: Peter Hutterer
Reviewed-by: Chase Douglas
commit 8436c920953f288aea2d6d5f370f8eaaaef82d97
Author: Peter Hutterer
Date: Thu Mar 15 11:51:41 2012 +1000
Fix wrong button label and mask copy on OS X
Regression introduced in c1a5a70b51f12dedf354102217c7cd4247ed3a4b.
If double-padding is applied, the length of the mask on the wire may be
smaller than libXi's mask_len. When copying, only the wire length must be
copied, with the remainder set to 0.
When advancing to the button labels, the wire length matters, not libXi's
internal length.
Signed-off-by: Peter Hutterer
Reviewed-by: Jeremy Huddleston
Tested-by: Jeremy Huddleston
commit 70b730b0548ca9e408f14f2576b972beb32a0ad0
Author: Peter Hutterer
Date: Thu Mar 8 16:03:50 2012 +1000
libXi 1.6.0
Signed-off-by: Peter Hutterer
commit 1b9f0394c3d4d3833f8560ae8170a4d5842419ab
Author: Chase Douglas
Date: Wed Mar 7 14:52:54 2012 -0800
Fix XIScrollClass increment value on 32-bit machines
This fixes scroll class increment values on 32-bit machines. Performing
1UL << 32 shifts the bit off the end of a 32-bit unsigned long value. By
expanding to 1ULL, we have the full 64-bits of an unsigned long long
including on 32-bit machines.
Before this change, xinput list --long would output scroll increment
values of -nan.
Signed-off-by: Chase Douglas
Signed-off-by: Peter Hutterer
commit c1a5a70b51f12dedf354102217c7cd4247ed3a4b
Author: Michał Masłowski
Date: Tue Feb 21 20:54:40 2012 +0100
Fix bus error on MIPS N32 for bug #38331.
XIValuatorClassInfo and XIScrollClassInfo might have an address
of 4 bytes modulo 8, while they contain doubles which need 8 byte
alignment. This is fixed by adding extra padding after each structure
or array in sizeDeviceClassType and adding helper functions to
determine sizes and padding only in one place.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=38331
Signed-off-by: Michał Masłowski
Signed-off-by: Peter Hutterer
commit 34964b05c16161de65709d60799b9ad97ce56296
Author: Peter Hutterer
Date: Fri Jan 27 15:35:44 2012 +1000
libXi 1.5.99.3
Signed-off-by: Peter Hutterer
commit b355b7300235395717de06809ee6631ce55d3189
Author: Peter Hutterer
Date: Fri Jan 27 13:28:52 2012 +1000
Handle new XIAllowEvent request size
inputproto 2.1.99.6 restored the previous request for ABI compatibility
reasons, and it introduced a new XI 2.2 specific define.
Signed-off-by: Peter Hutterer
Reviewed-by: Keith Packard
commit 07ced7b48219e3bc0c98806f3d7106f86d1b2ca0
Author: Peter Hutterer
Date: Tue Jan 17 21:26:14 2012 +0100
Force class alignment to a multiple of sizeof(XID).
Calculate length field to a multiples of sizeof(XID). XIDs are typedefs
to ulong and thus may be 8 bytes on some platforms. This can trigger a
SIGBUS if a class ends up not being 8-aligned (e.g. after XAxisInfo).
Reported-by: Nicolai Stange
Signed-off-by: Peter Hutterer
Signed-off-by: Matthieu Herrb
commit 15feb92b30e13e7439a3434bea9f454645b97444
Author: Peter Hutterer
Date: Thu Jan 5 13:55:41 2012 +1000
man: fix typo Mappiing → Mapping
Signed-off-by: Peter Hutterer
commit 8576ae6b9ee974829e2fb8a834087652a6e9e1a2
Author: Cyril Brulebois
Date: Thu Dec 22 15:50:47 2011 +0100
configure.ac: Fix a typo in comments.
Signed-off-by: Cyril Brulebois
Reviewed-by: Chase Douglas
Signed-off-by: Peter Hutterer
commit ae0187c8708d2378373889827117911086581fdd
Author: Peter Hutterer
Date: Thu Dec 22 09:42:43 2011 +1000
libXi 1.5.99.2
Signed-off-by: Peter Hutterer
commit 47f3d887a7731f4ab68a69ed31dbe7acf6d13270
Merge: 82a6312 e73e2fe
Author: Peter Hutterer
Date: Wed Dec 21 15:40:37 2011 +1000
Merge branch 'multitouch'
Conflicts:
configure.ac
commit 82a631263ef4e6f46c1f33748089db8bf603b095
Author: Peter Hutterer
Date: Wed Dec 21 15:33:17 2011 +1000
libXi 1.5.0
Signed-off-by: Peter Hutterer
commit e73e2fe95dab3e0048b24d16327adbe54326ff3f
Author: Peter Hutterer
Date: Wed Sep 14 22:33:57 2011 -0700
Implement support for XI 2.2
Adds support for the new TouchClass for multitouch-capable servers/devices.
New events:
XITouchOwnershipEvent
New event types handled:
XITouchBegin, XITouchUpdate, XITouchEnd
XIRawTouchBegin, XIRawTouchUpdate, XIRawTouchEnd
New functions:
XIGrabTouchBegin ... passive grabs on touches
XIUngrabTouchBegin
XIAllowTouchEvents ... Allow/reject touch event sequences
New XIQueryDevice classes:
XITouchClassInfo
Requires libX11 1.5 for GetReqSized
Co-authored by: Chase Douglas
Signed-off-by: Peter Hutterer
commit 7888d14a499062a1c3b333f31f1330cecf1e97c1
Author: Peter Hutterer
Date: Tue Oct 25 13:30:47 2011 +1000
Bump to 1.5.99.1
Signed-off-by: Peter Hutterer
commit fa6505f0a86b296e8f12f0fb8f472ef17b501fdb
Author: Peter Hutterer
Date: Mon Dec 19 09:36:34 2011 +1000
man: minor formatting fix in XIGrabButton
commit 49408e39e4b084fe362e9ee197bfa0aa1c55384d
Author: Peter Hutterer
Date: Fri Nov 11 15:32:21 2011 +1000
Include config.h from source files
Signed-off-by: Peter Hutterer
Reviewed-by: Gaetan Nadon
Reviewed-by: Jeremy Huddleston
commit ba83a1e58592e41f207524f106ba26dd71fe4171
Author: Peter Hutterer
Date: Wed Oct 26 08:55:35 2011 +1000
Stop unnecessary calls to size_classes
Xmalloc is a macro evaluating its argument twice.
Signed-off-by: Peter Hutterer
Reviewed-by: Jeremy Huddleston
commit 6d6ae8fc8b9620bf864ac7dff8d818573eee3e4f
Author: Peter Hutterer
Date: Wed Oct 26 08:54:53 2011 +1000
Fix duplicate sizeof in copy_classes
sizeof(bla * sizeof()) is'nt right.
Plus add some () to the next_block call too to emphasise that *nclasses is
the multiplicator.
Signed-off-by: Peter Hutterer
Reviewed-by: Jeremy Huddleston
commit 323730f7fa70190d2ea00e62c6964fee524ca430
Author: Peter Hutterer
Date: Thu Oct 27 10:27:49 2011 +1000
man: passive grabs return the number of failed modifier combinations
Signed-off-by: Peter Hutterer