122
117
rep.sequenceNumber = client->sequence;
124
dev = LookupDeviceIntRec (stuff->deviceid);
119
dev = LookupDeviceIntRec(stuff->deviceid);
128
SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
122
SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
137
SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
130
SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
142
135
if (((dev->grab) && !SameClient(dev->grab, client)) ||
143
((xkbd->grab) && !SameClient(xkbd->grab, client)))
136
((xkbd->grab) && !SameClient(xkbd->grab, client)))
144
137
rep.status = AlreadyGrabbed;
145
138
else if ((dev->sync.frozen &&
146
dev->sync.other && !SameClient(dev->sync.other, client)) ||
139
dev->sync.other && !SameClient(dev->sync.other, client)) ||
147
140
(xkbd->sync.frozen &&
148
141
xkbd->sync.other && !SameClient(xkbd->sync.other, client)))
149
142
rep.status = GrabFrozen;
152
if (ChangeKeyboardDevice (xkbd, dev) != Success)
154
SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
144
if (ChangeKeyboardDevice(xkbd, dev) != Success) {
145
SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
159
InitFocusClassDeviceStruct (dev);
150
InitFocusClassDeviceStruct(dev);
160
151
if (!dev->kbdfeed)
161
InitKbdFeedbackClassDeviceStruct(dev, (BellProcPtr)NoopDDA,
162
(KbdCtrlProcPtr)NoopDDA);
152
InitKbdFeedbackClassDeviceStruct(dev, (BellProcPtr) NoopDDA,
153
(KbdCtrlProcPtr) NoopDDA);
164
155
df->win = xf->win;
165
156
df->revert = xf->revert;
166
157
df->time = xf->time;
167
158
df->traceGood = xf->traceGood;
168
if (df->traceSize != xf->traceSize)
170
Must_have_memory = TRUE; /* XXX */
171
df->trace = (WindowPtr *) xrealloc(df->trace,
172
xf->traceSize * sizeof(WindowPtr));
173
Must_have_memory = FALSE; /* XXX */
159
if (df->traceSize != xf->traceSize) {
160
Must_have_memory = TRUE; /* XXX */
161
df->trace = (WindowPtr *) xrealloc(df->trace,
164
Must_have_memory = FALSE; /* XXX */
175
166
df->traceSize = xf->traceSize;
176
for (i=0; i<df->traceSize; i++)
167
for (i = 0; i < df->traceSize; i++)
177
168
df->trace[i] = xf->trace[i];
178
RegisterOtherDevice (xkbd);
179
RegisterKeyboardDevice (dev);
169
RegisterOtherDevice(xkbd);
170
RegisterKeyboardDevice(dev);
181
172
ev.type = ChangeDeviceNotify;
182
173
ev.deviceid = stuff->deviceid;
183
174
ev.time = currentTime.milliseconds;
184
175
ev.request = NewKeyboard;
186
SendEventToAllWindows (dev, ChangeDeviceNotifyMask, (xEvent *)&ev, 1);
187
SendMappingNotify (MappingKeyboard, k->curKeySyms.minKeyCode,
188
k->curKeySyms.maxKeyCode - k->curKeySyms.minKeyCode + 1,client);
177
SendEventToAllWindows(dev, ChangeDeviceNotifyMask, (xEvent *) & ev, 1);
178
SendMappingNotify(MappingKeyboard, k->curKeySyms.minKeyCode,
179
k->curKeySyms.maxKeyCode - k->curKeySyms.minKeyCode +
193
WriteReplyToClient (client, sizeof (xChangeKeyboardDeviceReply),
185
WriteReplyToClient(client, sizeof(xChangeKeyboardDeviceReply), &rep);
198
189
/***********************************************************************