XKBlibint.h revision 61b2299d
1/* $Xorg: XKBlibint.h,v 1.3 2000/08/17 19:45:04 cpqbld Exp $ */ 2/************************************************************ 3Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. 4 5Permission to use, copy, modify, and distribute this 6software and its documentation for any purpose and without 7fee is hereby granted, provided that the above copyright 8notice appear in all copies and that both that copyright 9notice and this permission notice appear in supporting 10documentation, and that the name of Silicon Graphics not be 11used in advertising or publicity pertaining to distribution 12of the software without specific prior written permission. 13Silicon Graphics makes no representation about the suitability 14of this software for any purpose. It is provided "as is" 15without any express or implied warranty. 16 17SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 18SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 19AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON 20GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 21DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 22DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 23OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH 24THE USE OR PERFORMANCE OF THIS SOFTWARE. 25 26********************************************************/ 27/* $XFree86: xc/lib/X11/XKBlibint.h,v 3.5 2003/04/18 18:21:45 torrey Exp $ */ 28 29#ifndef _XKBLIBINT_H_ 30#define _XKBLIBINT_H_ 31 32#include <X11/Xutil.h> 33#include <X11/XKBlib.h> 34 35#define XkbMapPending (1<<0) 36#define XkbXlibNewKeyboard (1<<1) 37 38typedef int (*XkbKSToMBFunc)( 39 XPointer /* priv */, 40 KeySym /* sym */, 41 char * /* buf */, 42 int /* len */, 43 int * /* extra_rtrn */ 44); 45 46typedef KeySym (*XkbMBToKSFunc)( 47 XPointer /* priv */, 48 char * /* buf */, 49 int /* len */, 50 Status * /* status */ 51); 52 53typedef KeySym (*XkbToUpperFunc)( 54 KeySym /* sym */ 55); 56 57typedef struct _XkbConverters { 58 XkbKSToMBFunc KSToMB; 59 XPointer KSToMBPriv; 60 XkbMBToKSFunc MBToKS; 61 XPointer MBToKSPriv; 62 XkbToUpperFunc KSToUpper; 63} XkbConverters; 64 65extern XkbInternAtomFunc _XkbInternAtomFunc; 66extern XkbGetAtomNameFunc _XkbGetAtomNameFunc; 67 68typedef struct _XkbInfoRec { 69 unsigned flags; 70 unsigned xlib_ctrls; 71 XExtCodes *codes; 72 int srv_major; 73 int srv_minor; 74 unsigned selected_events; 75 unsigned short selected_nkn_details; 76 unsigned short selected_map_details; 77 XkbDescRec *desc; 78 XkbMapChangesRec changes; 79 Atom composeLED; 80 XkbConverters cvt; 81 XkbConverters latin1cvt; 82} XkbInfoRec, *XkbInfoPtr; 83 84 85#define _XkbUnavailable(d) \ 86 (((d)->flags&XlibDisplayNoXkb) ||\ 87 ((!(d)->xkb_info || (!(d)->xkb_info->desc)) && !_XkbLoadDpy(d))) 88 89#define _XkbCheckPendingRefresh(d,xi) {\ 90 if ((xi)->flags&XkbXlibNewKeyboard)\ 91 _XkbReloadDpy((d));\ 92 else if ((xi)->flags&XkbMapPending) {\ 93 if (XkbGetMapChanges((d),(xi)->desc, &(xi)->changes)==Success) {\ 94 LockDisplay((d));\ 95 (xi)->changes.changed= 0;\ 96 UnlockDisplay((d));\ 97 }\ 98 }\ 99} 100 101#define _XkbNeedModmap(i) ((!(i)->desc->map)||(!(i)->desc->map->modmap)) 102 103 /* 104 * mask of the events that the "invisible" XKB support in Xlib needs 105 */ 106#define XKB_XLIB_MAP_MASK (XkbAllClientInfoMask) 107 108 /* 109 * Handy helper macros 110 */ 111#define XKB_INSURE_SIZE(f,t,nNum,oNum) {\ 112 if ((f)==NULL) \ 113 (f)=(t *)Xmalloc(sizeof(t)*(nNum));\ 114 else if ((nNum)<(oNum))\ 115 (f)=(t *)Xrealloc((f),sizeof(t)*(nNum));\ 116 } 117 118typedef struct _XkbReadBuffer { 119 int error; 120 int size; 121 char *start; 122 char *data; 123} XkbReadBufferRec,*XkbReadBufferPtr; 124 125#define _XkbAlloc(s) Xmalloc((s)) 126#define _XkbCalloc(n,s) Xcalloc((n),(s)) 127#define _XkbRealloc(o,s) Xrealloc((o),(s)) 128#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t))) 129#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t))) 130#define _XkbTypedRealloc(o,n,t) \ 131 ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t)) 132#define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t)) 133#define _XkbFree(p) Xfree(p) 134 135_XFUNCPROTOBEGIN 136 137extern void _XkbReloadDpy( 138 Display * /* dpy */ 139); 140 141extern KeySym _XKeycodeToKeysym( 142 Display* /* display */, 143#if NeedWidePrototypes 144 unsigned int /* keycode */, 145#else 146 KeyCode /* keycode */, 147#endif 148 int /* index */ 149); 150 151extern KeyCode _XKeysymToKeycode( 152 Display* /* display */, 153 KeySym /* keysym */ 154); 155 156extern KeySym _XLookupKeysym( 157 XKeyEvent* /* key_event */, 158 int /* index */ 159); 160 161extern int _XRefreshKeyboardMapping( 162 XMappingEvent* /* event_map */ 163); 164 165extern unsigned _XKeysymToModifiers( 166 Display * /* dpy */, 167 KeySym /* ks */ 168); 169 170extern int _XTranslateKey( 171 register Display * /* dpy */, 172 KeyCode /* keycode */, 173 register unsigned int /* modifiers */, 174 unsigned int * /* modifiers_return */, 175 KeySym * /* keysym_return */ 176); 177 178extern int _XTranslateKeySym( 179 Display * /* dpy */, 180 register KeySym /* symbol */, 181 unsigned int /* modifiers */, 182 char * /* buffer */, 183 int /* nbytes */ 184); 185 186extern int _XLookupString( 187 register XKeyEvent * /* event */, 188 char * /* buffer */, 189 int /* nbytes */, 190 KeySym * /* keysym */, 191 XComposeStatus * /* status */ 192); 193 194extern void _XkbNoteCoreMapChanges( 195 XkbMapChangesRec * /* old */, 196 XMappingEvent * /* new */, 197 unsigned int /* wanted */ 198); 199 200extern int _XkbInitReadBuffer( 201 Display * /* dpy */, 202 XkbReadBufferPtr /* buf */, 203 int /* size */ 204); 205 206extern int _XkbSkipReadBufferData( 207 XkbReadBufferPtr /* from */, 208 int /* size */ 209); 210 211extern int _XkbCopyFromReadBuffer( 212 XkbReadBufferPtr /* from */, 213 char * /* to */, 214 int /* size */ 215); 216 217 218#if defined(WORD64) || defined(LONG64) 219extern int _XkbReadCopyData32( 220 int * /* from */, 221 long * /* to */, 222 int /* num_words */ 223); 224 225extern int _XkbWriteCopyData32( 226 unsigned long * /* from */, 227 CARD32 * /* to */, 228 int /* num_words */ 229); 230 231extern int _XkbReadBufferCopy32( 232 XkbReadBufferPtr /* from */, 233 long * /* to */, 234 int /* size */ 235); 236#else 237#define _XkbReadCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4) 238#define _XkbWriteCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4) 239#define _XkbReadBufferCopy32(f,t,s) _XkbCopyFromReadBuffer(f,(char *)t,(s)*4) 240#endif 241 242#ifndef NO_DEC_BINARY_COMPATIBILITY 243#define XKB_FORCE_INT_KEYSYM 1 244#endif 245 246#ifdef XKB_FORCE_INT_KEYSYM 247extern int _XkbReadCopyKeySyms( 248 int * /* from */, 249 KeySym * /* to */, 250 int /* num_words */ 251); 252 253extern int _XkbWriteCopyKeySyms( 254 KeySym * /* from */, 255 CARD32 * /* to */, 256 int /* num_words */ 257); 258 259extern int _XkbReadBufferCopyKeySyms( 260 XkbReadBufferPtr /* from */, 261#ifndef NO_DEC_BUG_FIX 262 KeySym * /* to */, 263#else 264 long * /* to */, 265#endif 266 int /* size */ 267); 268#else 269#define _XkbReadCopyKeySyms(f,t,n) _XkbReadCopyData32(f,t,n) 270#define _XkbWriteCopyKeySyms(f,t,n) _XkbWriteCopyData32(f,t,n) 271#define _XkbReadBufferCopyKeySyms(f,t,s) _XkbReadBufferCopy32(f,t,s) 272#endif 273 274extern char *_XkbPeekAtReadBuffer( 275 XkbReadBufferPtr /* from */, 276 int /* size */ 277); 278 279extern char *_XkbGetReadBufferPtr( 280 XkbReadBufferPtr /* from */, 281 int /* size */ 282); 283#define _XkbGetTypedRdBufPtr(b,n,t) ((t *)_XkbGetReadBufferPtr(b,(n)*SIZEOF(t))) 284 285extern int _XkbFreeReadBuffer( 286 XkbReadBufferPtr /* buf */ 287); 288 289extern Bool 290_XkbGetReadBufferCountedString( 291 XkbReadBufferPtr /* buf */, 292 char ** /* rtrn */ 293); 294 295extern char *_XkbGetCharset( 296 void 297); 298 299extern int _XkbGetConverters( 300 const char * /* encoding_name */, 301 XkbConverters * /* cvt_rtrn */ 302); 303 304#ifdef NEED_MAP_READERS 305 306extern Status _XkbReadGetMapReply( 307 Display * /* dpy */, 308 xkbGetMapReply * /* rep */, 309 XkbDescRec * /* xkb */, 310 int * /* nread_rtrn */ 311); 312 313extern Status _XkbReadGetCompatMapReply( 314 Display * /* dpy */, 315 xkbGetCompatMapReply * /* rep */, 316 XkbDescPtr /* xkb */, 317 int * /* nread_rtrn */ 318); 319 320extern Status _XkbReadGetIndicatorMapReply( 321 Display * /* dpy */, 322 xkbGetIndicatorMapReply * /* rep */, 323 XkbDescPtr /* xkb */, 324 int * /* nread_rtrn */ 325); 326 327extern Status _XkbReadGetNamesReply( 328 Display * /* dpy */, 329 xkbGetNamesReply * /* rep */, 330 XkbDescPtr /* xkb */, 331 int * /* nread_rtrn */ 332); 333 334extern Status _XkbReadGetGeometryReply( 335 Display * /* dpy */, 336 xkbGetGeometryReply * /* rep */, 337 XkbDescPtr /* xkb */, 338 int * /* nread_rtrn */ 339); 340 341#endif 342 343_XFUNCPROTOEND 344 345#endif /* _XKBLIBINT_H_ */ 346