XKBlibint.h revision 818534a1
11ab64890Smrg/************************************************************ 21ab64890SmrgCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc. 31ab64890Smrg 41ab64890SmrgPermission to use, copy, modify, and distribute this 51ab64890Smrgsoftware and its documentation for any purpose and without 61ab64890Smrgfee is hereby granted, provided that the above copyright 71ab64890Smrgnotice appear in all copies and that both that copyright 81ab64890Smrgnotice and this permission notice appear in supporting 961b2299dSmrgdocumentation, and that the name of Silicon Graphics not be 1061b2299dSmrgused in advertising or publicity pertaining to distribution 111ab64890Smrgof the software without specific prior written permission. 1261b2299dSmrgSilicon Graphics makes no representation about the suitability 131ab64890Smrgof this software for any purpose. It is provided "as is" 141ab64890Smrgwithout any express or implied warranty. 151ab64890Smrg 1661b2299dSmrgSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 1761b2299dSmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 181ab64890SmrgAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON 1961b2299dSmrgGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 2061b2299dSmrgDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 2161b2299dSmrgDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 221ab64890SmrgOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH 231ab64890SmrgTHE USE OR PERFORMANCE OF THIS SOFTWARE. 241ab64890Smrg 251ab64890Smrg********************************************************/ 261ab64890Smrg 271ab64890Smrg#ifndef _XKBLIBINT_H_ 28818534a1Smrg#define _XKBLIBINT_H_ 291ab64890Smrg 301ab64890Smrg#include <X11/Xutil.h> 311ab64890Smrg#include <X11/XKBlib.h> 321ab64890Smrg 33818534a1Smrg#define XkbMapPending (1<<0) 34818534a1Smrg#define XkbXlibNewKeyboard (1<<1) 351ab64890Smrg 36818534a1Smrgtypedef int (*XkbKSToMBFunc)( 37818534a1Smrg XPointer /* priv */, 38818534a1Smrg KeySym /* sym */, 39818534a1Smrg char * /* buf */, 40818534a1Smrg int /* len */, 41818534a1Smrg int * /* extra_rtrn */ 421ab64890Smrg); 431ab64890Smrg 44818534a1Smrgtypedef KeySym (*XkbMBToKSFunc)( 45818534a1Smrg XPointer /* priv */, 46818534a1Smrg char * /* buf */, 47818534a1Smrg int /* len */, 48818534a1Smrg Status * /* status */ 491ab64890Smrg); 501ab64890Smrg 51818534a1Smrgtypedef KeySym (*XkbToUpperFunc)( 52818534a1Smrg KeySym /* sym */ 531ab64890Smrg); 541ab64890Smrg 551ab64890Smrgtypedef struct _XkbConverters { 56818534a1Smrg XkbKSToMBFunc KSToMB; 57818534a1Smrg XPointer KSToMBPriv; 58818534a1Smrg XkbMBToKSFunc MBToKS; 59818534a1Smrg XPointer MBToKSPriv; 60818534a1Smrg XkbToUpperFunc KSToUpper; 611ab64890Smrg} XkbConverters; 621ab64890Smrg 63818534a1Smrgextern XkbInternAtomFunc _XkbInternAtomFunc; 64818534a1Smrgextern XkbGetAtomNameFunc _XkbGetAtomNameFunc; 651ab64890Smrg 661ab64890Smrgtypedef struct _XkbInfoRec { 67818534a1Smrg unsigned flags; 68818534a1Smrg unsigned xlib_ctrls; 69818534a1Smrg XExtCodes *codes; 70818534a1Smrg int srv_major; 71818534a1Smrg int srv_minor; 72818534a1Smrg unsigned selected_events; 73818534a1Smrg unsigned short selected_nkn_details; 74818534a1Smrg unsigned short selected_map_details; 75818534a1Smrg XkbDescRec *desc; 76818534a1Smrg XkbMapChangesRec changes; 77818534a1Smrg Atom composeLED; 78818534a1Smrg XkbConverters cvt; 79818534a1Smrg XkbConverters latin1cvt; 801ab64890Smrg} XkbInfoRec, *XkbInfoPtr; 811ab64890Smrg 821ab64890Smrg 83818534a1Smrg#define _XkbUnavailable(d) \ 84818534a1Smrg (((d)->flags&XlibDisplayNoXkb) || \ 85818534a1Smrg ((!(d)->xkb_info || (!(d)->xkb_info->desc)) && !_XkbLoadDpy(d))) 86818534a1Smrg 87818534a1Smrg#define _XkbCheckPendingRefresh(d,xi) { \ 88818534a1Smrg if ((xi)->flags&XkbXlibNewKeyboard) \ 89818534a1Smrg _XkbReloadDpy((d)); \ 90818534a1Smrg else if ((xi)->flags&XkbMapPending) { \ 91818534a1Smrg if (XkbGetMapChanges((d),(xi)->desc, &(xi)->changes)==Success) { \ 92818534a1Smrg LockDisplay((d)); \ 93818534a1Smrg (xi)->changes.changed= 0; \ 94818534a1Smrg UnlockDisplay((d)); \ 95818534a1Smrg } \ 96818534a1Smrg } \ 971ab64890Smrg} 981ab64890Smrg 99818534a1Smrg#define _XkbNeedModmap(i) ((!(i)->desc->map)||(!(i)->desc->map->modmap)) 1001ab64890Smrg 101818534a1Smrg /* 102818534a1Smrg * mask of the events that the "invisible" XKB support in Xlib needs 103818534a1Smrg */ 1041ab64890Smrg#define XKB_XLIB_MAP_MASK (XkbAllClientInfoMask) 1051ab64890Smrg 106818534a1Smrg /* 107818534a1Smrg * Handy helper macros 108818534a1Smrg */ 1091ab64890Smrg 1101ab64890Smrgtypedef struct _XkbReadBuffer { 111818534a1Smrg int error; 112818534a1Smrg int size; 113818534a1Smrg char *start; 114818534a1Smrg char *data; 115818534a1Smrg} XkbReadBufferRec, *XkbReadBufferPtr; 116818534a1Smrg 117818534a1Smrg#define _XkbAlloc(s) Xmalloc((s)) 118818534a1Smrg#define _XkbCalloc(n,s) Xcalloc((n),(s)) 119818534a1Smrg#define _XkbRealloc(o,s) Xrealloc((o),(s)) 120818534a1Smrg#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t))) 121818534a1Smrg#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t))) 122818534a1Smrg#define _XkbTypedRealloc(o,n,t) \ 123818534a1Smrg ((o) ? (t *)Xrealloc((o), (n)*sizeof(t)) : _XkbTypedCalloc(n,t)) 124818534a1Smrg#define _XkbClearElems(a,f,l,t) bzero(&(a)[f], ((l)-(f)+1) * sizeof(t)) 125818534a1Smrg#define _XkbFree(p) Xfree(p) 1261ab64890Smrg 1271ab64890Smrg_XFUNCPROTOBEGIN 1281ab64890Smrg 129818534a1Smrgextern void _XkbReloadDpy( 130818534a1Smrg Display * /* dpy */ 1311ab64890Smrg); 1321ab64890Smrg 1331ab64890Smrgextern KeySym _XKeycodeToKeysym( 134818534a1Smrg Display * /* display */, 1351ab64890Smrg#if NeedWidePrototypes 136818534a1Smrg unsigned int /* keycode */, 1371ab64890Smrg#else 138818534a1Smrg KeyCode /* keycode */, 1391ab64890Smrg#endif 140818534a1Smrg int /* index */ 1411ab64890Smrg); 1421ab64890Smrg 1431ab64890Smrgextern KeyCode _XKeysymToKeycode( 144818534a1Smrg Display * /* display */, 145818534a1Smrg KeySym /* keysym */ 1461ab64890Smrg); 1471ab64890Smrg 1481ab64890Smrgextern KeySym _XLookupKeysym( 149818534a1Smrg XKeyEvent * /* key_event */, 150818534a1Smrg int /* index */ 1511ab64890Smrg); 1521ab64890Smrg 1531ab64890Smrgextern int _XRefreshKeyboardMapping( 154818534a1Smrg XMappingEvent * /* event_map */ 1551ab64890Smrg); 1561ab64890Smrg 157818534a1Smrgextern unsigned _XKeysymToModifiers( 158818534a1Smrg Display * /* dpy */, 159818534a1Smrg KeySym /* ks */ 1601ab64890Smrg); 1611ab64890Smrg 16261b2299dSmrgextern int _XTranslateKey( 163818534a1Smrg register Display * /* dpy */, 164818534a1Smrg KeyCode /* keycode */, 1651ab64890Smrg register unsigned int /* modifiers */, 166818534a1Smrg unsigned int * /* modifiers_return */, 167818534a1Smrg KeySym * /* keysym_return */ 1681ab64890Smrg); 1691ab64890Smrg 170818534a1Smrgextern int _XTranslateKeySym( 171818534a1Smrg Display * /* dpy */, 172818534a1Smrg register KeySym /* symbol */, 173818534a1Smrg unsigned int /* modifiers */, 174818534a1Smrg char * /* buffer */, 175818534a1Smrg int /* nbytes */ 1761ab64890Smrg); 1771ab64890Smrg 178818534a1Smrgextern int _XLookupString( 179818534a1Smrg register XKeyEvent * /* event */, 180818534a1Smrg char * /* buffer */, 181818534a1Smrg int /* nbytes */, 182818534a1Smrg KeySym * /* keysym */, 183818534a1Smrg XComposeStatus * /* status */ 1841ab64890Smrg); 1851ab64890Smrg 1861ab64890Smrgextern void _XkbNoteCoreMapChanges( 187818534a1Smrg XkbMapChangesRec * /* old */, 188818534a1Smrg XMappingEvent * /* new */, 189818534a1Smrg unsigned int /* wanted */ 1901ab64890Smrg); 1911ab64890Smrg 192818534a1Smrgextern int _XkbInitReadBuffer( 193818534a1Smrg Display * /* dpy */, 194818534a1Smrg XkbReadBufferPtr /* buf */, 195818534a1Smrg int /* size */ 1961ab64890Smrg); 1971ab64890Smrg 1981ab64890Smrgextern int _XkbSkipReadBufferData( 199818534a1Smrg XkbReadBufferPtr /* from */, 200818534a1Smrg int /* size */ 2011ab64890Smrg); 2021ab64890Smrg 2031ab64890Smrgextern int _XkbCopyFromReadBuffer( 204818534a1Smrg XkbReadBufferPtr /* from */, 205818534a1Smrg char * /* to */, 206818534a1Smrg int /* size */ 2071ab64890Smrg); 2081ab64890Smrg 2091ab64890Smrg 210eb411b4bSmrg#ifdef LONG64 211818534a1Smrgextern int _XkbReadCopyData32( 212818534a1Smrg int * /* from */, 213818534a1Smrg long * /* to */, 214818534a1Smrg int /* num_words */ 2151ab64890Smrg); 2161ab64890Smrg 217818534a1Smrgextern int _XkbWriteCopyData32( 218818534a1Smrg unsigned long * /* from */, 219818534a1Smrg CARD32 * /* to */, 220818534a1Smrg int /* num_words */ 2211ab64890Smrg); 2221ab64890Smrg 2231ab64890Smrgextern int _XkbReadBufferCopy32( 224818534a1Smrg XkbReadBufferPtr /* from */, 225818534a1Smrg long * /* to */, 226818534a1Smrg int /* size */ 2271ab64890Smrg); 2281ab64890Smrg#else 229818534a1Smrg#define _XkbReadCopyData32(f,t,s) memcpy((char *)(t), (char *)(f), (s)*4) 230818534a1Smrg#define _XkbWriteCopyData32(f,t,s) memcpy((char *)(t), (char *)(f), (s)*4) 231818534a1Smrg#define _XkbReadBufferCopy32(f,t,s) _XkbCopyFromReadBuffer(f, (char *)t, (s)*4) 2321ab64890Smrg#endif 2331ab64890Smrg 2341ab64890Smrg#ifndef NO_DEC_BINARY_COMPATIBILITY 2351ab64890Smrg#define XKB_FORCE_INT_KEYSYM 1 2361ab64890Smrg#endif 2371ab64890Smrg 2381ab64890Smrg#ifdef XKB_FORCE_INT_KEYSYM 2391ab64890Smrgextern int _XkbReadCopyKeySyms( 240818534a1Smrg int * /* from */, 241818534a1Smrg KeySym * /* to */, 242818534a1Smrg int /* num_words */ 2431ab64890Smrg); 2441ab64890Smrg 245818534a1Smrgextern int _XkbWriteCopyKeySyms( 246818534a1Smrg KeySym * /* from */, 247818534a1Smrg CARD32 * /* to */, 248818534a1Smrg int /* num_words */ 2491ab64890Smrg); 2501ab64890Smrg 2511ab64890Smrgextern int _XkbReadBufferCopyKeySyms( 252818534a1Smrg XkbReadBufferPtr /* from */, 2531ab64890Smrg#ifndef NO_DEC_BUG_FIX 254818534a1Smrg KeySym * /* to */, 2551ab64890Smrg#else 256818534a1Smrg long * /* to */, 2571ab64890Smrg#endif 258818534a1Smrg int /* size */ 2591ab64890Smrg); 2601ab64890Smrg#else 261818534a1Smrg#define _XkbReadCopyKeySyms(f,t,n) _XkbReadCopyData32(f,t,n) 262818534a1Smrg#define _XkbWriteCopyKeySyms(f,t,n) _XkbWriteCopyData32(f,t,n) 263818534a1Smrg#define _XkbReadBufferCopyKeySyms(f,t,s) _XkbReadBufferCopy32(f,t,s) 2641ab64890Smrg#endif 2651ab64890Smrg 2661ab64890Smrgextern char *_XkbPeekAtReadBuffer( 267818534a1Smrg XkbReadBufferPtr /* from */, 268818534a1Smrg int /* size */ 2691ab64890Smrg); 2701ab64890Smrg 2711ab64890Smrgextern char *_XkbGetReadBufferPtr( 272818534a1Smrg XkbReadBufferPtr /* from */, 273818534a1Smrg int /* size */ 2741ab64890Smrg); 275818534a1Smrg#define _XkbGetTypedRdBufPtr(b,n,t) ((t *)_XkbGetReadBufferPtr(b,(n)*SIZEOF(t))) 2761ab64890Smrg 2771ab64890Smrgextern int _XkbFreeReadBuffer( 278818534a1Smrg XkbReadBufferPtr /* buf */ 2791ab64890Smrg); 2801ab64890Smrg 2811ab64890Smrgextern Bool 2821ab64890Smrg_XkbGetReadBufferCountedString( 283818534a1Smrg XkbReadBufferPtr /* buf */, 284818534a1Smrg char ** /* rtrn */ 2851ab64890Smrg); 2861ab64890Smrg 287818534a1Smrgextern char *_XkbGetCharset( 2881ab64890Smrg void 2891ab64890Smrg); 2901ab64890Smrg 291818534a1Smrgextern int _XkbGetConverters( 2921ab64890Smrg const char * /* encoding_name */, 2931ab64890Smrg XkbConverters * /* cvt_rtrn */ 2941ab64890Smrg); 2951ab64890Smrg 296818534a1Smrg#ifdef NEED_MAP_READERS 2971ab64890Smrg 298818534a1Smrgextern Status _XkbReadGetMapReply( 299818534a1Smrg Display * /* dpy */, 300818534a1Smrg xkbGetMapReply * /* rep */, 301818534a1Smrg XkbDescRec * /* xkb */, 302818534a1Smrg int * /* nread_rtrn */ 3031ab64890Smrg); 3041ab64890Smrg 305818534a1Smrgextern Status _XkbReadGetCompatMapReply( 306818534a1Smrg Display * /* dpy */, 307818534a1Smrg xkbGetCompatMapReply * /* rep */, 308818534a1Smrg XkbDescPtr /* xkb */, 309818534a1Smrg int * /* nread_rtrn */ 3101ab64890Smrg); 3111ab64890Smrg 312818534a1Smrgextern Status _XkbReadGetIndicatorMapReply( 313818534a1Smrg Display * /* dpy */, 314818534a1Smrg xkbGetIndicatorMapReply * /* rep */, 315818534a1Smrg XkbDescPtr /* xkb */, 316818534a1Smrg int * /* nread_rtrn */ 3171ab64890Smrg); 3181ab64890Smrg 319818534a1Smrgextern Status _XkbReadGetNamesReply( 320818534a1Smrg Display * /* dpy */, 321818534a1Smrg xkbGetNamesReply * /* rep */, 322818534a1Smrg XkbDescPtr /* xkb */, 323818534a1Smrg int * /* nread_rtrn */ 3241ab64890Smrg); 3251ab64890Smrg 326818534a1Smrgextern Status _XkbReadGetGeometryReply( 327818534a1Smrg Display * /* dpy */, 328818534a1Smrg xkbGetGeometryReply * /* rep */, 329818534a1Smrg XkbDescPtr /* xkb */, 330818534a1Smrg int * /* nread_rtrn */ 3311ab64890Smrg); 3321ab64890Smrg 3331ab64890Smrg#endif 3341ab64890Smrg 3351ab64890Smrg_XFUNCPROTOEND 3361ab64890Smrg 3371ab64890Smrg#endif /* _XKBLIBINT_H_ */ 338