| 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_ */ |