summaryrefslogtreecommitdiff
path: root/man/XIChangeHierarchy.txt
blob: e4ffd5b6f024ad64a5f09b0a61779669915fb434 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
XICHANGEHIERARCHY(libmansuffix)
===============================

NAME
----

   XIChangeHierarchy - change the device hierarchy.

SYNOPSIS
--------

   #include <X11/extensions/XInput2.h>

   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.

   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
   XICreateMaster, XIRemoveMaster, XIAttachSlave or XIDetachSlave.

                typedef union {
                    int type;
                    XICreateMasterInfo create;
                    XIRemoveMasterInfo remove;
                    XIAttachSlave attach;
                    XIDetachSlave detach;
                } XIAnyHierarchyChangeInfo;

                typedef struct {
                    int type; /* XICreateMaster */
                    char* name;
                    Bool sendCore;
                    Bool enable;
                } XICreateMasterInfo;

                typedef struct {
                    int type; /* XIRemoveMaster */
                    int device;
                    int returnMode;
                    XDevice* returnPointer;
                    XDevice* returnKeyboard;
                } XIRemoveMasterInfo;

                typedef struct {
                    int type; /* XIAttachSlave */
                    int device;
                    int newMaster;
                } XIAttachSlaveInfo;

                typedef struct {
                    int type; /* XIDetachSlave */
                    int device;
                } XIDetachSlaveInfo;

   XICreateMasterInfo 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.

   XICreateMasterInfo 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.