Commit | Line | Data |
---|---|---|
a09e091a JB |
1 | /************************************************************ |
2 | Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. | |
3 | ||
4 | Permission to use, copy, modify, and distribute this | |
5 | software and its documentation for any purpose and without | |
6 | fee is hereby granted, provided that the above copyright | |
7 | notice appear in all copies and that both that copyright | |
8 | notice and this permission notice appear in supporting | |
9 | documentation, and that the name of Silicon Graphics not be | |
10 | used in advertising or publicity pertaining to distribution | |
11 | of the software without specific prior written permission. | |
12 | Silicon Graphics makes no representation about the suitability | |
13 | of this software for any purpose. It is provided "as is" | |
14 | without any express or implied warranty. | |
15 | ||
16 | SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS | |
17 | SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | |
18 | AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON | |
19 | GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL | |
20 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, | |
21 | DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE | |
22 | OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH | |
23 | THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
24 | ||
25 | ********************************************************/ | |
26 | ||
27 | #ifndef _XKBSRV_H_ | |
28 | #define _XKBSRV_H_ | |
29 | ||
30 | #define XkbAllocClientMap SrvXkbAllocClientMap | |
31 | #define XkbAllocServerMap SrvXkbAllocServerMap | |
32 | #define XkbChangeTypesOfKey SrvXkbChangeTypesOfKey | |
33 | #define XkbCopyKeyTypes SrvXkbCopyKeyTypes | |
34 | #define XkbFreeClientMap SrvXkbFreeClientMap | |
35 | #define XkbFreeServerMap SrvXkbFreeServerMap | |
36 | #define XkbKeyTypesForCoreSymbols SrvXkbKeyTypesForCoreSymbols | |
37 | #define XkbApplyCompatMapToKey SrvXkbApplyCompatMapToKey | |
38 | #define XkbResizeKeyActions SrvXkbResizeKeyActions | |
39 | #define XkbResizeKeySyms SrvXkbResizeKeySyms | |
40 | #define XkbResizeKeyType SrvXkbResizeKeyType | |
41 | #define XkbAllocCompatMap SrvXkbAllocCompatMap | |
42 | #define XkbAllocControls SrvXkbAllocControls | |
43 | #define XkbAllocIndicatorMaps SrvXkbAllocIndicatorMaps | |
44 | #define XkbAllocKeyboard SrvXkbAllocKeyboard | |
45 | #define XkbAllocNames SrvXkbAllocNames | |
46 | #define XkbFreeCompatMap SrvXkbFreeCompatMap | |
47 | #define XkbFreeKeyboard SrvXkbFreeKeyboard | |
48 | #define XkbFreeNames SrvXkbFreeNames | |
49 | #define XkbLatchModifiers SrvXkbLatchModifiers | |
50 | #define XkbLatchGroup SrvXkbLatchGroup | |
51 | #define XkbVirtualModsToReal SrvXkbVirtualModsToReal | |
52 | #define XkbChangeKeycodeRange SrvXkbChangeKeycodeRange | |
53 | #define XkbApplyVirtualModChanges SrvXkbApplyVirtualModChanges | |
54 | ||
55 | #include <X11/extensions/XKBproto.h> | |
56 | #include "xkbstr.h" | |
57 | #include "xkbrules.h" | |
58 | #include "inputstr.h" | |
59 | #include "events.h" | |
60 | ||
61 | typedef struct _XkbInterest { | |
62 | DeviceIntPtr dev; | |
63 | ClientPtr client; | |
64 | XID resource; | |
65 | struct _XkbInterest *next; | |
66 | CARD16 extDevNotifyMask; | |
67 | CARD16 stateNotifyMask; | |
68 | CARD16 namesNotifyMask; | |
69 | CARD32 ctrlsNotifyMask; | |
70 | CARD8 compatNotifyMask; | |
71 | BOOL bellNotifyMask; | |
72 | BOOL actionMessageMask; | |
73 | CARD16 accessXNotifyMask; | |
74 | CARD32 iStateNotifyMask; | |
75 | CARD32 iMapNotifyMask; | |
76 | CARD16 altSymsNotifyMask; | |
77 | CARD32 autoCtrls; | |
78 | CARD32 autoCtrlValues; | |
79 | } XkbInterestRec, *XkbInterestPtr; | |
80 | ||
81 | typedef struct _XkbRadioGroup { | |
82 | CARD8 flags; | |
83 | CARD8 nMembers; | |
84 | CARD8 dfltDown; | |
85 | CARD8 currentDown; | |
86 | CARD8 members[XkbRGMaxMembers]; | |
87 | } XkbRadioGroupRec, *XkbRadioGroupPtr; | |
88 | ||
89 | typedef struct _XkbEventCause { | |
90 | CARD8 kc; | |
91 | CARD8 event; | |
92 | CARD8 mjr; | |
93 | CARD8 mnr; | |
94 | ClientPtr client; | |
95 | } XkbEventCauseRec, *XkbEventCausePtr; | |
96 | ||
97 | #define XkbSetCauseKey(c,k,e) { (c)->kc= (k),(c)->event= (e),\ | |
98 | (c)->mjr= (c)->mnr= 0; \ | |
99 | (c)->client= NULL; } | |
100 | #define XkbSetCauseReq(c,j,n,cl) { (c)->kc= (c)->event= 0,\ | |
101 | (c)->mjr= (j),(c)->mnr= (n);\ | |
102 | (c)->client= (cl); } | |
103 | #define XkbSetCauseCoreReq(c,e,cl) XkbSetCauseReq(c,e,0,cl) | |
104 | #define XkbSetCauseXkbReq(c,e,cl) XkbSetCauseReq(c,XkbReqCode,e,cl) | |
105 | #define XkbSetCauseUnknown(c) XkbSetCauseKey(c,0,0) | |
106 | ||
107 | #define _OFF_TIMER 0 | |
108 | #define _KRG_WARN_TIMER 1 | |
109 | #define _KRG_TIMER 2 | |
110 | #define _SK_TIMEOUT_TIMER 3 | |
111 | #define _ALL_TIMEOUT_TIMER 4 | |
112 | ||
113 | #define _BEEP_NONE 0 | |
114 | #define _BEEP_FEATURE_ON 1 | |
115 | #define _BEEP_FEATURE_OFF 2 | |
116 | #define _BEEP_FEATURE_CHANGE 3 | |
117 | #define _BEEP_SLOW_WARN 4 | |
118 | #define _BEEP_SLOW_PRESS 5 | |
119 | #define _BEEP_SLOW_ACCEPT 6 | |
120 | #define _BEEP_SLOW_REJECT 7 | |
121 | #define _BEEP_SLOW_RELEASE 8 | |
122 | #define _BEEP_STICKY_LATCH 9 | |
123 | #define _BEEP_STICKY_LOCK 10 | |
124 | #define _BEEP_STICKY_UNLOCK 11 | |
125 | #define _BEEP_LED_ON 12 | |
126 | #define _BEEP_LED_OFF 13 | |
127 | #define _BEEP_LED_CHANGE 14 | |
128 | #define _BEEP_BOUNCE_REJECT 15 | |
129 | ||
130 | typedef struct _XkbFilter { | |
131 | CARD16 keycode; | |
132 | CARD8 what; | |
133 | CARD8 active; | |
134 | CARD8 filterOthers; | |
135 | CARD32 priv; | |
136 | XkbAction upAction; | |
137 | int (*filter) (struct _XkbSrvInfo * /* xkbi */ , | |
138 | struct _XkbFilter * /* filter */ , | |
139 | unsigned /* keycode */ , | |
140 | XkbAction * /* action */ | |
141 | ); | |
142 | struct _XkbFilter *next; | |
143 | } XkbFilterRec, *XkbFilterPtr; | |
144 | ||
145 | typedef struct _XkbSrvInfo { | |
146 | XkbStateRec prev_state; | |
147 | XkbStateRec state; | |
148 | XkbDescPtr desc; | |
149 | ||
150 | DeviceIntPtr device; | |
151 | KbdCtrlProcPtr kbdProc; | |
152 | ||
153 | XkbRadioGroupPtr radioGroups; | |
154 | CARD8 nRadioGroups; | |
155 | CARD8 clearMods; | |
156 | CARD8 setMods; | |
157 | INT16 groupChange; | |
158 | ||
159 | CARD16 dfltPtrDelta; | |
160 | ||
161 | double mouseKeysCurve; | |
162 | double mouseKeysCurveFactor; | |
163 | INT16 mouseKeysDX; | |
164 | INT16 mouseKeysDY; | |
165 | CARD8 mouseKeysFlags; | |
166 | Bool mouseKeysAccel; | |
167 | CARD8 mouseKeysCounter; | |
168 | ||
169 | CARD8 lockedPtrButtons; | |
170 | CARD8 shiftKeyCount; | |
171 | KeyCode mouseKey; | |
172 | KeyCode inactiveKey; | |
173 | KeyCode slowKey; | |
174 | KeyCode slowKeyEnableKey; | |
175 | KeyCode repeatKey; | |
176 | CARD8 krgTimerActive; | |
177 | CARD8 beepType; | |
178 | CARD8 beepCount; | |
179 | ||
180 | CARD32 flags; | |
181 | CARD32 lastPtrEventTime; | |
182 | CARD32 lastShiftEventTime; | |
183 | OsTimerPtr beepTimer; | |
184 | OsTimerPtr mouseKeyTimer; | |
185 | OsTimerPtr slowKeysTimer; | |
186 | OsTimerPtr bounceKeysTimer; | |
187 | OsTimerPtr repeatKeyTimer; | |
188 | OsTimerPtr krgTimer; | |
189 | ||
190 | int szFilters; | |
191 | XkbFilterPtr filters; | |
192 | } XkbSrvInfoRec, *XkbSrvInfoPtr; | |
193 | ||
194 | #define XkbSLI_IsDefault (1L<<0) | |
195 | #define XkbSLI_HasOwnState (1L<<1) | |
196 | ||
197 | typedef struct _XkbSrvLedInfo { | |
198 | CARD16 flags; | |
199 | CARD16 class; | |
200 | CARD16 id; | |
201 | union { | |
202 | KbdFeedbackPtr kf; | |
203 | LedFeedbackPtr lf; | |
204 | } fb; | |
205 | ||
206 | CARD32 physIndicators; | |
207 | CARD32 autoState; | |
208 | CARD32 explicitState; | |
209 | CARD32 effectiveState; | |
210 | ||
211 | CARD32 mapsPresent; | |
212 | CARD32 namesPresent; | |
213 | XkbIndicatorMapPtr maps; | |
214 | Atom *names; | |
215 | ||
216 | CARD32 usesBase; | |
217 | CARD32 usesLatched; | |
218 | CARD32 usesLocked; | |
219 | CARD32 usesEffective; | |
220 | CARD32 usesCompat; | |
221 | CARD32 usesControls; | |
222 | ||
223 | CARD32 usedComponents; | |
224 | } XkbSrvLedInfoRec, *XkbSrvLedInfoPtr; | |
225 | ||
226 | /* | |
227 | * Settings for xkbClientFlags field (used by DIX) | |
228 | * These flags _must_ not overlap with XkbPCF_* | |
229 | */ | |
230 | #define _XkbClientInitialized (1<<15) | |
231 | ||
232 | #define _XkbWantsDetectableAutoRepeat(c)\ | |
233 | ((c)->xkbClientFlags&XkbPCF_DetectableAutoRepeatMask) | |
234 | ||
235 | /* | |
236 | * Settings for flags field | |
237 | */ | |
238 | #define _XkbStateNotifyInProgress (1<<0) | |
239 | ||
240 | typedef struct { | |
241 | ProcessInputProc processInputProc; | |
242 | /* If processInputProc is set to something different than realInputProc, | |
243 | * UNWRAP and COND_WRAP will not touch processInputProc and update only | |
244 | * realInputProc. This ensures that | |
245 | * processInputProc == (frozen ? EnqueueEvent : realInputProc) | |
246 | * | |
247 | * WRAP_PROCESS_INPUT_PROC should only be called during initialization, | |
248 | * since it may destroy this invariant. | |
249 | */ | |
250 | ProcessInputProc realInputProc; | |
251 | DeviceUnwrapProc unwrapProc; | |
252 | } xkbDeviceInfoRec, *xkbDeviceInfoPtr; | |
253 | ||
254 | #define WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \ | |
255 | device->public.processInputProc = proc; \ | |
256 | oldprocs->processInputProc = \ | |
257 | oldprocs->realInputProc = device->public.realInputProc; \ | |
258 | device->public.realInputProc = proc; \ | |
259 | oldprocs->unwrapProc = device->unwrapProc; \ | |
260 | device->unwrapProc = unwrapproc; | |
261 | ||
262 | #define COND_WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \ | |
263 | if (device->public.processInputProc == device->public.realInputProc)\ | |
264 | device->public.processInputProc = proc; \ | |
265 | oldprocs->processInputProc = \ | |
266 | oldprocs->realInputProc = device->public.realInputProc; \ | |
267 | device->public.realInputProc = proc; \ | |
268 | oldprocs->unwrapProc = device->unwrapProc; \ | |
269 | device->unwrapProc = unwrapproc; | |
270 | ||
271 | #define UNWRAP_PROCESS_INPUT_PROC(device, oldprocs, backupproc) \ | |
272 | backupproc = device->public.realInputProc; \ | |
273 | if (device->public.processInputProc == device->public.realInputProc)\ | |
274 | device->public.processInputProc = oldprocs->realInputProc; \ | |
275 | device->public.realInputProc = oldprocs->realInputProc; \ | |
276 | device->unwrapProc = oldprocs->unwrapProc; | |
277 | ||
278 | extern _X_EXPORT DevPrivateKeyRec xkbDevicePrivateKeyRec; | |
279 | ||
280 | #define xkbDevicePrivateKey (&xkbDevicePrivateKeyRec) | |
281 | ||
282 | #define XKBDEVICEINFO(dev) ((xkbDeviceInfoPtr)dixLookupPrivate(&(dev)->devPrivates, xkbDevicePrivateKey)) | |
283 | ||
284 | extern void xkbUnwrapProc(DeviceIntPtr, DeviceHandleProc, pointer); | |
285 | ||
286 | /***====================================================================***/ | |
287 | ||
288 | /***====================================================================***/ | |
289 | ||
290 | #define XkbAX_KRGMask (XkbSlowKeysMask|XkbBounceKeysMask) | |
291 | #define XkbAllFilteredEventsMask \ | |
292 | (XkbAccessXKeysMask|XkbRepeatKeysMask|XkbMouseKeysAccelMask|XkbAX_KRGMask) | |
293 | ||
294 | /***====================================================================***/ | |
295 | ||
296 | extern _X_EXPORT int XkbReqCode; | |
297 | extern _X_EXPORT int XkbEventBase; | |
298 | extern _X_EXPORT int XkbKeyboardErrorCode; | |
299 | extern _X_EXPORT const char *XkbBaseDirectory; | |
300 | extern _X_EXPORT const char *XkbBinDirectory; | |
301 | ||
302 | extern _X_EXPORT CARD32 xkbDebugFlags; | |
303 | ||
304 | #define _XkbLibError(c,l,d) /* Epoch fail */ | |
305 | ||
306 | /* "a" is a "unique" numeric identifier that just defines which error | |
307 | * code statement it is. _XkbErrCode2(4, foo) means "this is the 4th error | |
308 | * statement in this function". lovely. | |
309 | */ | |
310 | #define _XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff))) | |
311 | #define _XkbErrCode3(a,b,c) _XkbErrCode2(a,(((unsigned int)(b))<<16)|(c)) | |
312 | #define _XkbErrCode4(a,b,c,d) _XkbErrCode3(a,b,((((unsigned int)(c))<<8)|(d))) | |
313 | ||
314 | #define Status int | |
315 | ||
316 | extern _X_EXPORT void XkbUseMsg(void | |
317 | ); | |
318 | ||
319 | extern _X_EXPORT int XkbProcessArguments(int /* argc */ , | |
320 | char ** /* argv */ , | |
321 | int /* i */ | |
322 | ); | |
323 | ||
324 | extern _X_EXPORT Bool XkbInitPrivates(void); | |
325 | ||
326 | extern _X_EXPORT void XkbSetExtension(DeviceIntPtr device, | |
327 | ProcessInputProc proc); | |
328 | ||
329 | extern _X_EXPORT void XkbFreeCompatMap(XkbDescPtr /* xkb */ , | |
330 | unsigned int /* which */ , | |
331 | Bool /* freeMap */ | |
332 | ); | |
333 | ||
334 | extern _X_EXPORT void XkbFreeNames(XkbDescPtr /* xkb */ , | |
335 | unsigned int /* which */ , | |
336 | Bool /* freeMap */ | |
337 | ); | |
338 | ||
339 | extern _X_EXPORT int _XkbLookupAnyDevice(DeviceIntPtr *pDev, | |
340 | int id, | |
341 | ClientPtr client, | |
342 | Mask access_mode, int *xkb_err); | |
343 | ||
344 | extern _X_EXPORT int _XkbLookupKeyboard(DeviceIntPtr *pDev, | |
345 | int id, | |
346 | ClientPtr client, | |
347 | Mask access_mode, int *xkb_err); | |
348 | ||
349 | extern _X_EXPORT int _XkbLookupBellDevice(DeviceIntPtr *pDev, | |
350 | int id, | |
351 | ClientPtr client, | |
352 | Mask access_mode, int *xkb_err); | |
353 | ||
354 | extern _X_EXPORT int _XkbLookupLedDevice(DeviceIntPtr *pDev, | |
355 | int id, | |
356 | ClientPtr client, | |
357 | Mask access_mode, int *xkb_err); | |
358 | ||
359 | extern _X_EXPORT int _XkbLookupButtonDevice(DeviceIntPtr *pDev, | |
360 | int id, | |
361 | ClientPtr client, | |
362 | Mask access_mode, int *xkb_err); | |
363 | ||
364 | extern _X_EXPORT XkbDescPtr XkbAllocKeyboard(void | |
365 | ); | |
366 | ||
367 | extern _X_EXPORT Status XkbAllocClientMap(XkbDescPtr /* xkb */ , | |
368 | unsigned int /* which */ , | |
369 | unsigned int /* nTypes */ | |
370 | ); | |
371 | ||
372 | extern _X_EXPORT Status XkbAllocServerMap(XkbDescPtr /* xkb */ , | |
373 | unsigned int /* which */ , | |
374 | unsigned int /* nNewActions */ | |
375 | ); | |
376 | ||
377 | extern _X_EXPORT void XkbFreeClientMap(XkbDescPtr /* xkb */ , | |
378 | unsigned int /* what */ , | |
379 | Bool /* freeMap */ | |
380 | ); | |
381 | ||
382 | extern _X_EXPORT void XkbFreeServerMap(XkbDescPtr /* xkb */ , | |
383 | unsigned int /* what */ , | |
384 | Bool /* freeMap */ | |
385 | ); | |
386 | ||
387 | extern _X_EXPORT Status XkbAllocIndicatorMaps(XkbDescPtr /* xkb */ | |
388 | ); | |
389 | ||
390 | extern _X_EXPORT Status XkbAllocCompatMap(XkbDescPtr /* xkb */ , | |
391 | unsigned int /* which */ , | |
392 | unsigned int /* nInterpret */ | |
393 | ); | |
394 | ||
395 | extern _X_EXPORT Status XkbAllocNames(XkbDescPtr /* xkb */ , | |
396 | unsigned int /* which */ , | |
397 | int /* nTotalRG */ , | |
398 | int /* nTotalAliases */ | |
399 | ); | |
400 | ||
401 | extern _X_EXPORT Status XkbAllocControls(XkbDescPtr /* xkb */ , | |
402 | unsigned int /* which */ | |
403 | ); | |
404 | ||
405 | extern _X_EXPORT Status XkbCopyKeyTypes(XkbKeyTypePtr /* from */ , | |
406 | XkbKeyTypePtr /* into */ , | |
407 | int /* num_types */ | |
408 | ); | |
409 | ||
410 | extern _X_EXPORT Status XkbResizeKeyType(XkbDescPtr /* xkb */ , | |
411 | int /* type_ndx */ , | |
412 | int /* map_count */ , | |
413 | Bool /* want_preserve */ , | |
414 | int /* new_num_lvls */ | |
415 | ); | |
416 | ||
417 | extern _X_EXPORT void XkbFreeKeyboard(XkbDescPtr /* xkb */ , | |
418 | unsigned int /* which */ , | |
419 | Bool /* freeDesc */ | |
420 | ); | |
421 | ||
422 | extern _X_EXPORT void XkbFreeComponentNames(XkbComponentNamesPtr /* names */ , | |
423 | Bool /* freeNames */ | |
424 | ); | |
425 | ||
426 | extern _X_EXPORT void XkbSetActionKeyMods(XkbDescPtr /* xkb */ , | |
427 | XkbAction * /* act */ , | |
428 | unsigned int /* mods */ | |
429 | ); | |
430 | ||
431 | extern _X_EXPORT unsigned int XkbMaskForVMask(XkbDescPtr /* xkb */ , | |
432 | unsigned int /* vmask */ | |
433 | ); | |
434 | ||
435 | extern _X_EXPORT Bool XkbVirtualModsToReal(XkbDescPtr /* xkb */ , | |
436 | unsigned int /* virtua_mask */ , | |
437 | unsigned int * /* mask_rtrn */ | |
438 | ); | |
439 | ||
440 | extern _X_EXPORT unsigned int XkbAdjustGroup(int /* group */ , | |
441 | XkbControlsPtr /* ctrls */ | |
442 | ); | |
443 | ||
444 | extern _X_EXPORT KeySym *XkbResizeKeySyms(XkbDescPtr /* xkb */ , | |
445 | int /* key */ , | |
446 | int /* needed */ | |
447 | ); | |
448 | ||
449 | extern _X_EXPORT XkbAction *XkbResizeKeyActions(XkbDescPtr /* xkb */ , | |
450 | int /* key */ , | |
451 | int /* needed */ | |
452 | ); | |
453 | ||
454 | extern _X_EXPORT void XkbUpdateKeyTypesFromCore(DeviceIntPtr /* pXDev */ , | |
455 | KeySymsPtr /* syms */ , | |
456 | KeyCode /* first */ , | |
457 | CARD8 /* num */ , | |
458 | XkbChangesPtr /* pChanges */ | |
459 | ); | |
460 | ||
461 | extern _X_EXPORT void XkbUpdateDescActions(XkbDescPtr /* xkb */ , | |
462 | KeyCode /* first */ , | |
463 | CARD8 /* num */ , | |
464 | XkbChangesPtr /* changes */ | |
465 | ); | |
466 | ||
467 | extern _X_EXPORT void XkbUpdateActions(DeviceIntPtr /* pXDev */ , | |
468 | KeyCode /* first */ , | |
469 | CARD8 /* num */ , | |
470 | XkbChangesPtr /* pChanges */ , | |
471 | unsigned int * /* needChecksRtrn */ , | |
472 | XkbEventCausePtr /* cause */ | |
473 | ); | |
474 | ||
475 | extern _X_EXPORT KeySymsPtr XkbGetCoreMap(DeviceIntPtr /* keybd */ | |
476 | ); | |
477 | ||
478 | extern _X_EXPORT void XkbApplyMappingChange(DeviceIntPtr /* pXDev */ , | |
479 | KeySymsPtr /* map */ , | |
480 | KeyCode /* firstKey */ , | |
481 | CARD8 /* num */ , | |
482 | CARD8 * /* modmap */ , | |
483 | ClientPtr /* client */ | |
484 | ); | |
485 | ||
486 | extern _X_EXPORT void XkbSetIndicators(DeviceIntPtr /* pXDev */ , | |
487 | CARD32 /* affect */ , | |
488 | CARD32 /* values */ , | |
489 | XkbEventCausePtr /* cause */ | |
490 | ); | |
491 | ||
492 | extern _X_EXPORT void XkbUpdateIndicators(DeviceIntPtr /* keybd */ , | |
493 | CARD32 /* changed */ , | |
494 | Bool /* check_edevs */ , | |
495 | XkbChangesPtr /* pChanges */ , | |
496 | XkbEventCausePtr /* cause */ | |
497 | ); | |
498 | ||
499 | extern _X_EXPORT XkbSrvLedInfoPtr XkbAllocSrvLedInfo(DeviceIntPtr /* dev */ , | |
500 | KbdFeedbackPtr /* kf */ , | |
501 | LedFeedbackPtr /* lf */ , | |
502 | unsigned int /* needed_parts */ | |
503 | ); | |
504 | ||
505 | extern _X_EXPORT XkbSrvLedInfoPtr XkbCopySrvLedInfo(DeviceIntPtr /* dev */ , | |
506 | XkbSrvLedInfoPtr /* src */ , | |
507 | KbdFeedbackPtr /* kf */ , | |
508 | LedFeedbackPtr /* lf */ | |
509 | ); | |
510 | ||
511 | extern _X_EXPORT XkbSrvLedInfoPtr XkbFindSrvLedInfo(DeviceIntPtr /* dev */ , | |
512 | unsigned int /* class */ , | |
513 | unsigned int /* id */ , | |
514 | unsigned int /* needed_parts */ | |
515 | ); | |
516 | ||
517 | extern _X_EXPORT void XkbApplyLedNameChanges(DeviceIntPtr /* dev */ , | |
518 | XkbSrvLedInfoPtr /* sli */ , | |
519 | unsigned int /* changed_names */ , | |
520 | xkbExtensionDeviceNotify * /* ed */ | |
521 | , | |
522 | XkbChangesPtr /* changes */ , | |
523 | XkbEventCausePtr /* cause */ | |
524 | ); | |
525 | ||
526 | extern _X_EXPORT void XkbApplyLedMapChanges(DeviceIntPtr /* dev */ , | |
527 | XkbSrvLedInfoPtr /* sli */ , | |
528 | unsigned int /* changed_maps */ , | |
529 | xkbExtensionDeviceNotify * /* ed */ | |
530 | , | |
531 | XkbChangesPtr /* changes */ , | |
532 | XkbEventCausePtr /* cause */ | |
533 | ); | |
534 | ||
535 | extern _X_EXPORT void XkbApplyLedStateChanges(DeviceIntPtr /* dev */ , | |
536 | XkbSrvLedInfoPtr /* sli */ , | |
537 | unsigned int /* changed_leds */ , | |
538 | xkbExtensionDeviceNotify * | |
539 | /* ed */ , | |
540 | XkbChangesPtr /* changes */ , | |
541 | XkbEventCausePtr /* cause */ | |
542 | ); | |
543 | ||
544 | extern _X_EXPORT void XkbFlushLedEvents(DeviceIntPtr /* dev */ , | |
545 | DeviceIntPtr /* kbd */ , | |
546 | XkbSrvLedInfoPtr /* sli */ , | |
547 | xkbExtensionDeviceNotify * /* ed */ , | |
548 | XkbChangesPtr /* changes */ , | |
549 | XkbEventCausePtr /* cause */ | |
550 | ); | |
551 | ||
552 | extern _X_EXPORT unsigned int XkbIndicatorsToUpdate(DeviceIntPtr /* dev */ , | |
553 | unsigned long | |
554 | /* state_changes */ , | |
555 | Bool /* enabled_ctrl_changes */ | |
556 | ); | |
557 | ||
558 | extern _X_EXPORT void XkbComputeDerivedState(XkbSrvInfoPtr /* xkbi */ | |
559 | ); | |
560 | ||
561 | extern _X_EXPORT void XkbCheckSecondaryEffects(XkbSrvInfoPtr /* xkbi */ , | |
562 | unsigned int /* which */ , | |
563 | XkbChangesPtr /* changes */ , | |
564 | XkbEventCausePtr /* cause */ | |
565 | ); | |
566 | ||
567 | extern _X_EXPORT void XkbCheckIndicatorMaps(DeviceIntPtr /* dev */ , | |
568 | XkbSrvLedInfoPtr /* sli */ , | |
569 | unsigned int /* which */ | |
570 | ); | |
571 | ||
572 | extern _X_EXPORT unsigned int XkbStateChangedFlags(XkbStatePtr /* old */ , | |
573 | XkbStatePtr /* new */ | |
574 | ); | |
575 | ||
576 | extern _X_EXPORT void XkbSendStateNotify(DeviceIntPtr /* kbd */ , | |
577 | xkbStateNotify * /* pSN */ | |
578 | ); | |
579 | ||
580 | extern _X_EXPORT void XkbSendMapNotify(DeviceIntPtr /* kbd */ , | |
581 | xkbMapNotify * /* ev */ | |
582 | ); | |
583 | ||
584 | extern _X_EXPORT int XkbComputeControlsNotify(DeviceIntPtr /* kbd */ , | |
585 | XkbControlsPtr /* old */ , | |
586 | XkbControlsPtr /* new */ , | |
587 | xkbControlsNotify * /* pCN */ , | |
588 | Bool /* forceCtrlProc */ | |
589 | ); | |
590 | ||
591 | extern _X_EXPORT void XkbSendControlsNotify(DeviceIntPtr /* kbd */ , | |
592 | xkbControlsNotify * /* ev */ | |
593 | ); | |
594 | ||
595 | extern _X_EXPORT void XkbSendCompatMapNotify(DeviceIntPtr /* kbd */ , | |
596 | xkbCompatMapNotify * /* ev */ | |
597 | ); | |
598 | ||
599 | extern _X_EXPORT void XkbHandleBell(BOOL /* force */ , | |
600 | BOOL /* eventOnly */ , | |
601 | DeviceIntPtr /* kbd */ , | |
602 | CARD8 /* percent */ , | |
603 | pointer /* ctrl */ , | |
604 | CARD8 /* class */ , | |
605 | Atom /* name */ , | |
606 | WindowPtr /* pWin */ , | |
607 | ClientPtr /* pClient */ | |
608 | ); | |
609 | ||
610 | extern _X_EXPORT void XkbSendAccessXNotify(DeviceIntPtr /* kbd */ , | |
611 | xkbAccessXNotify * /* pEv */ | |
612 | ); | |
613 | ||
614 | extern _X_EXPORT void XkbSendNamesNotify(DeviceIntPtr /* kbd */ , | |
615 | xkbNamesNotify * /* ev */ | |
616 | ); | |
617 | ||
618 | extern _X_EXPORT void XkbSendActionMessage(DeviceIntPtr /* kbd */ , | |
619 | xkbActionMessage * /* ev */ | |
620 | ); | |
621 | ||
622 | extern _X_EXPORT void XkbSendExtensionDeviceNotify(DeviceIntPtr /* kbd */ , | |
623 | ClientPtr /* client */ , | |
624 | xkbExtensionDeviceNotify * /* ev */ | |
625 | ); | |
626 | ||
627 | extern _X_EXPORT void XkbSendNotification(DeviceIntPtr /* kbd */ , | |
628 | XkbChangesPtr /* pChanges */ , | |
629 | XkbEventCausePtr /* cause */ | |
630 | ); | |
631 | ||
632 | extern _X_EXPORT void XkbProcessKeyboardEvent(DeviceEvent * /* event */ , | |
633 | DeviceIntPtr /* keybd */ | |
634 | ); | |
635 | ||
636 | extern _X_EXPORT void XkbHandleActions(DeviceIntPtr /* dev */ , | |
637 | DeviceIntPtr /* kbd */ , | |
638 | DeviceEvent * /* event */ | |
639 | ); | |
640 | ||
641 | extern _X_EXPORT Bool XkbEnableDisableControls(XkbSrvInfoPtr /* xkbi */ , | |
642 | unsigned long /* change */ , | |
643 | unsigned long /* newValues */ , | |
644 | XkbChangesPtr /* changes */ , | |
645 | XkbEventCausePtr /* cause */ | |
646 | ); | |
647 | ||
648 | extern _X_EXPORT void AccessXInit(DeviceIntPtr /* dev */ | |
649 | ); | |
650 | ||
651 | extern _X_EXPORT Bool AccessXFilterPressEvent(DeviceEvent * /* event */ , | |
652 | DeviceIntPtr /* keybd */ | |
653 | ); | |
654 | ||
655 | extern _X_EXPORT Bool AccessXFilterReleaseEvent(DeviceEvent * /* event */ , | |
656 | DeviceIntPtr /* keybd */ | |
657 | ); | |
658 | ||
659 | extern _X_EXPORT void AccessXCancelRepeatKey(XkbSrvInfoPtr /* xkbi */ , | |
660 | KeyCode /* key */ | |
661 | ); | |
662 | ||
663 | extern _X_EXPORT void AccessXComputeCurveFactor(XkbSrvInfoPtr /* xkbi */ , | |
664 | XkbControlsPtr /* ctrls */ | |
665 | ); | |
666 | ||
667 | extern _X_EXPORT XkbInterestPtr XkbFindClientResource(DevicePtr /* inDev */ , | |
668 | ClientPtr /* client */ | |
669 | ); | |
670 | ||
671 | extern _X_EXPORT XkbInterestPtr XkbAddClientResource(DevicePtr /* inDev */ , | |
672 | ClientPtr /* client */ , | |
673 | XID /* id */ | |
674 | ); | |
675 | ||
676 | extern _X_EXPORT int XkbRemoveResourceClient(DevicePtr /* inDev */ , | |
677 | XID /* id */ | |
678 | ); | |
679 | ||
680 | extern _X_EXPORT int XkbDDXAccessXBeep(DeviceIntPtr /* dev */ , | |
681 | unsigned int /* what */ , | |
682 | unsigned int /* which */ | |
683 | ); | |
684 | ||
685 | extern _X_EXPORT int XkbDDXUsesSoftRepeat(DeviceIntPtr /* dev */ | |
686 | ); | |
687 | ||
688 | extern _X_EXPORT void XkbDDXKeybdCtrlProc(DeviceIntPtr /* dev */ , | |
689 | KeybdCtrl * /* ctrl */ | |
690 | ); | |
691 | ||
692 | extern _X_EXPORT void XkbDDXChangeControls(DeviceIntPtr /* dev */ , | |
693 | XkbControlsPtr /* old */ , | |
694 | XkbControlsPtr /* new */ | |
695 | ); | |
696 | ||
697 | extern _X_EXPORT void XkbDDXUpdateDeviceIndicators(DeviceIntPtr /* dev */ , | |
698 | XkbSrvLedInfoPtr /* sli */ , | |
699 | CARD32 /* newState */ | |
700 | ); | |
701 | ||
702 | extern _X_EXPORT int XkbDDXTerminateServer(DeviceIntPtr /* dev */ , | |
703 | KeyCode /* key */ , | |
704 | XkbAction * /* act */ | |
705 | ); | |
706 | ||
707 | extern _X_EXPORT int XkbDDXSwitchScreen(DeviceIntPtr /* dev */ , | |
708 | KeyCode /* key */ , | |
709 | XkbAction * /* act */ | |
710 | ); | |
711 | ||
712 | extern _X_EXPORT int XkbDDXPrivate(DeviceIntPtr /* dev */ , | |
713 | KeyCode /* key */ , | |
714 | XkbAction * /* act */ | |
715 | ); | |
716 | ||
717 | extern _X_EXPORT void XkbDisableComputedAutoRepeats(DeviceIntPtr /* pXDev */ , | |
718 | unsigned int /* key */ | |
719 | ); | |
720 | ||
721 | extern _X_EXPORT void XkbSetRepeatKeys(DeviceIntPtr /* pXDev */ , | |
722 | int /* key */ , | |
723 | int /* onoff */ | |
724 | ); | |
725 | ||
726 | extern _X_EXPORT int XkbLatchModifiers(DeviceIntPtr /* pXDev */ , | |
727 | CARD8 /* mask */ , | |
728 | CARD8 /* latches */ | |
729 | ); | |
730 | ||
731 | extern _X_EXPORT int XkbLatchGroup(DeviceIntPtr /* pXDev */ , | |
732 | int /* group */ | |
733 | ); | |
734 | ||
735 | extern _X_EXPORT void XkbClearAllLatchesAndLocks(DeviceIntPtr /* dev */ , | |
736 | XkbSrvInfoPtr /* xkbi */ , | |
737 | Bool /* genEv */ , | |
738 | XkbEventCausePtr /* cause */ | |
739 | ); | |
740 | ||
741 | extern _X_EXPORT void XkbGetRulesDflts(XkbRMLVOSet * /* rmlvo */ | |
742 | ); | |
743 | ||
744 | extern _X_EXPORT void XkbFreeRMLVOSet(XkbRMLVOSet * /* rmlvo */ , | |
745 | Bool /* freeRMLVO */ | |
746 | ); | |
747 | ||
748 | extern _X_EXPORT void XkbSetRulesDflts(XkbRMLVOSet * /* rmlvo */ | |
749 | ); | |
750 | ||
751 | extern _X_EXPORT void XkbDeleteRulesDflts(void | |
752 | ); | |
753 | ||
754 | extern _X_EXPORT void XkbDeleteRulesUsed(void | |
755 | ); | |
756 | ||
757 | extern _X_EXPORT int SProcXkbDispatch(ClientPtr /* client */ | |
758 | ); | |
759 | ||
760 | extern _X_EXPORT XkbGeometryPtr XkbLookupNamedGeometry(DeviceIntPtr /* dev */ , | |
761 | Atom /* name */ , | |
762 | Bool * /* shouldFree */ | |
763 | ); | |
764 | ||
765 | extern _X_EXPORT void XkbConvertCase(KeySym /* sym */ , | |
766 | KeySym * /* lower */ , | |
767 | KeySym * /* upper */ | |
768 | ); | |
769 | ||
770 | extern _X_EXPORT Status XkbChangeKeycodeRange(XkbDescPtr /* xkb */ , | |
771 | int /* minKC */ , | |
772 | int /* maxKC */ , | |
773 | XkbChangesPtr /* changes */ | |
774 | ); | |
775 | ||
776 | extern _X_EXPORT void XkbFreeSrvLedInfo(XkbSrvLedInfoPtr /* sli */ | |
777 | ); | |
778 | ||
779 | extern _X_EXPORT void XkbFreeInfo(XkbSrvInfoPtr /* xkbi */ | |
780 | ); | |
781 | ||
782 | extern _X_EXPORT Status XkbChangeTypesOfKey(XkbDescPtr /* xkb */ , | |
783 | int /* key */ , | |
784 | int /* nGroups */ , | |
785 | unsigned int /* groups */ , | |
786 | int * /* newTypesIn */ , | |
787 | XkbMapChangesPtr /* changes */ | |
788 | ); | |
789 | ||
790 | extern _X_EXPORT int XkbKeyTypesForCoreSymbols(XkbDescPtr /* xkb */ , | |
791 | int /* map_width */ , | |
792 | KeySym * /* core_syms */ , | |
793 | unsigned int /* protected */ , | |
794 | int * /* types_inout */ , | |
795 | KeySym * /* xkb_syms_rtrn */ | |
796 | ); | |
797 | ||
798 | extern _X_EXPORT Bool XkbApplyCompatMapToKey(XkbDescPtr /* xkb */ , | |
799 | KeyCode /* key */ , | |
800 | XkbChangesPtr /* changes */ | |
801 | ); | |
802 | ||
803 | extern _X_EXPORT Bool XkbApplyVirtualModChanges(XkbDescPtr /* xkb */ , | |
804 | unsigned int /* changed */ , | |
805 | XkbChangesPtr /* changes */ | |
806 | ); | |
807 | ||
808 | extern _X_EXPORT void XkbSendNewKeyboardNotify(DeviceIntPtr /* kbd */ , | |
809 | xkbNewKeyboardNotify * /* pNKN */ | |
810 | ); | |
811 | ||
812 | extern Bool XkbCopyKeymap(XkbDescPtr /* dst */ , | |
813 | XkbDescPtr /* src */ ); | |
814 | ||
815 | extern _X_EXPORT Bool XkbCopyDeviceKeymap(DeviceIntPtr /* dst */ , | |
816 | DeviceIntPtr /* src */ ); | |
817 | ||
818 | extern void XkbFilterEvents(ClientPtr /* pClient */ , | |
819 | int /* nEvents */ , | |
820 | xEvent * /* xE */ ); | |
821 | ||
822 | extern int XkbGetEffectiveGroup(XkbSrvInfoPtr /* xkbi */ , | |
823 | XkbStatePtr /* xkbstate */ , | |
824 | CARD8 /* keycode */ ); | |
825 | ||
826 | extern void XkbMergeLockedPtrBtns(DeviceIntPtr /* master */ ); | |
827 | ||
828 | extern void XkbFakeDeviceButton(DeviceIntPtr /* dev */ , | |
829 | int /* press */ , | |
830 | int /* button */ ); | |
831 | ||
832 | #include "xkbfile.h" | |
833 | #include "xkbrules.h" | |
834 | ||
835 | #define _XkbListKeycodes 0 | |
836 | #define _XkbListTypes 1 | |
837 | #define _XkbListCompat 2 | |
838 | #define _XkbListSymbols 3 | |
839 | #define _XkbListGeometry 4 | |
840 | #define _XkbListNumComponents 5 | |
841 | ||
842 | extern _X_EXPORT unsigned int XkbDDXLoadKeymapByNames(DeviceIntPtr /* keybd */ , | |
843 | XkbComponentNamesPtr | |
844 | /* names */ , | |
845 | unsigned int /* want */ , | |
846 | unsigned int /* need */ , | |
847 | XkbDescPtr * | |
848 | /* finfoRtrn */ , | |
849 | char * | |
850 | /* keymapNameRtrn */ , | |
851 | int /* keymapNameRtrnLen */ | |
852 | ); | |
853 | ||
854 | extern _X_EXPORT Bool XkbDDXNamesFromRules(DeviceIntPtr /* keybd */ , | |
855 | char * /* rules */ , | |
856 | XkbRF_VarDefsPtr /* defs */ , | |
857 | XkbComponentNamesPtr /* names */ | |
858 | ); | |
859 | ||
860 | extern _X_EXPORT XkbDescPtr XkbCompileKeymap(DeviceIntPtr /* dev */ , | |
861 | XkbRMLVOSet * /* rmlvo */ | |
862 | ); | |
863 | ||
864 | #endif /* _XKBSRV_H_ */ |