XKBlibint.h revision 1ab64890
11ab64890Smrg/* $Xorg: XKBlibint.h,v 1.3 2000/08/17 19:45:04 cpqbld Exp $ */ 21ab64890Smrg/************************************************************ 31ab64890SmrgCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc. 41ab64890Smrg 51ab64890SmrgPermission to use, copy, modify, and distribute this 61ab64890Smrgsoftware and its documentation for any purpose and without 71ab64890Smrgfee is hereby granted, provided that the above copyright 81ab64890Smrgnotice appear in all copies and that both that copyright 91ab64890Smrgnotice and this permission notice appear in supporting 101ab64890Smrgdocumentation, and that the name of Silicon Graphics not be 111ab64890Smrgused in advertising or publicity pertaining to distribution 121ab64890Smrgof the software without specific prior written permission. 131ab64890SmrgSilicon Graphics makes no representation about the suitability 141ab64890Smrgof this software for any purpose. It is provided "as is" 151ab64890Smrgwithout any express or implied warranty. 161ab64890Smrg 171ab64890SmrgSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 181ab64890SmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 191ab64890SmrgAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON 201ab64890SmrgGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 211ab64890SmrgDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 221ab64890SmrgDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 231ab64890SmrgOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH 241ab64890SmrgTHE USE OR PERFORMANCE OF THIS SOFTWARE. 251ab64890Smrg 261ab64890Smrg********************************************************/ 271ab64890Smrg/* $XFree86: xc/lib/X11/XKBlibint.h,v 3.5 2003/04/18 18:21:45 torrey Exp $ */ 281ab64890Smrg 291ab64890Smrg#ifndef _XKBLIBINT_H_ 301ab64890Smrg#define _XKBLIBINT_H_ 311ab64890Smrg 321ab64890Smrg#include <X11/Xutil.h> 331ab64890Smrg#include <X11/XKBlib.h> 341ab64890Smrg 351ab64890Smrg#define XkbMapPending (1<<0) 361ab64890Smrg#define XkbXlibNewKeyboard (1<<1) 371ab64890Smrg 381ab64890Smrgtypedef int (*XkbKSToMBFunc)( 391ab64890Smrg XPointer /* priv */, 401ab64890Smrg KeySym /* sym */, 411ab64890Smrg char * /* buf */, 421ab64890Smrg int /* len */, 431ab64890Smrg int * /* extra_rtrn */ 441ab64890Smrg); 451ab64890Smrg 461ab64890Smrgtypedef KeySym (*XkbMBToKSFunc)( 471ab64890Smrg XPointer /* priv */, 481ab64890Smrg char * /* buf */, 491ab64890Smrg int /* len */, 501ab64890Smrg Status * /* status */ 511ab64890Smrg); 521ab64890Smrg 531ab64890Smrgtypedef KeySym (*XkbToUpperFunc)( 541ab64890Smrg KeySym /* sym */ 551ab64890Smrg); 561ab64890Smrg 571ab64890Smrgtypedef struct _XkbConverters { 581ab64890Smrg XkbKSToMBFunc KSToMB; 591ab64890Smrg XPointer KSToMBPriv; 601ab64890Smrg XkbMBToKSFunc MBToKS; 611ab64890Smrg XPointer MBToKSPriv; 621ab64890Smrg XkbToUpperFunc KSToUpper; 631ab64890Smrg} XkbConverters; 641ab64890Smrg 651ab64890Smrgextern XkbInternAtomFunc _XkbInternAtomFunc; 661ab64890Smrgextern XkbGetAtomNameFunc _XkbGetAtomNameFunc; 671ab64890Smrg 681ab64890Smrgtypedef struct _XkbInfoRec { 691ab64890Smrg unsigned flags; 701ab64890Smrg unsigned xlib_ctrls; 711ab64890Smrg XExtCodes *codes; 721ab64890Smrg int srv_major; 731ab64890Smrg int srv_minor; 741ab64890Smrg unsigned selected_events; 751ab64890Smrg unsigned short selected_nkn_details; 761ab64890Smrg unsigned short selected_map_details; 771ab64890Smrg XkbDescRec *desc; 781ab64890Smrg XkbMapChangesRec changes; 791ab64890Smrg Atom composeLED; 801ab64890Smrg XkbConverters cvt; 811ab64890Smrg XkbConverters latin1cvt; 821ab64890Smrg} XkbInfoRec, *XkbInfoPtr; 831ab64890Smrg 841ab64890Smrg 851ab64890Smrg#define _XkbUnavailable(d) \ 861ab64890Smrg (((d)->flags&XlibDisplayNoXkb) ||\ 871ab64890Smrg ((!(d)->xkb_info || (!(d)->xkb_info->desc)) && !_XkbLoadDpy(d))) 881ab64890Smrg 891ab64890Smrg#define _XkbCheckPendingRefresh(d,xi) {\ 901ab64890Smrg if ((xi)->flags&XkbXlibNewKeyboard)\ 911ab64890Smrg _XkbReloadDpy((d));\ 921ab64890Smrg else if ((xi)->flags&XkbMapPending) {\ 931ab64890Smrg if (XkbGetMapChanges((d),(xi)->desc, &(xi)->changes)==Success) {\ 941ab64890Smrg LockDisplay((d));\ 951ab64890Smrg (xi)->changes.changed= 0;\ 961ab64890Smrg UnlockDisplay((d));\ 971ab64890Smrg }\ 981ab64890Smrg }\ 991ab64890Smrg} 1001ab64890Smrg 1011ab64890Smrg#define _XkbNeedModmap(i) ((!(i)->desc->map)||(!(i)->desc->map->modmap)) 1021ab64890Smrg 1031ab64890Smrg /* 1041ab64890Smrg * mask of the events that the "invisible" XKB support in Xlib needs 1051ab64890Smrg */ 1061ab64890Smrg#define XKB_XLIB_MAP_MASK (XkbAllClientInfoMask) 1071ab64890Smrg 1081ab64890Smrg /* 1091ab64890Smrg * Handy helper macros 1101ab64890Smrg */ 1111ab64890Smrg#define XKB_INSURE_SIZE(f,t,nNum,oNum) {\ 1121ab64890Smrg if ((f)==NULL) \ 1131ab64890Smrg (f)=(t *)Xmalloc(sizeof(t)*(nNum));\ 1141ab64890Smrg else if ((nNum)<(oNum))\ 1151ab64890Smrg (f)=(t *)Xrealloc((f),sizeof(t)*(nNum));\ 1161ab64890Smrg } 1171ab64890Smrg 1181ab64890Smrgtypedef struct _XkbReadBuffer { 1191ab64890Smrg int error; 1201ab64890Smrg int size; 1211ab64890Smrg char *start; 1221ab64890Smrg char *data; 1231ab64890Smrg} XkbReadBufferRec,*XkbReadBufferPtr; 1241ab64890Smrg 1251ab64890Smrg#define _XkbAlloc(s) Xmalloc((s)) 1261ab64890Smrg#define _XkbCalloc(n,s) Xcalloc((n),(s)) 1271ab64890Smrg#define _XkbRealloc(o,s) Xrealloc((o),(s)) 1281ab64890Smrg#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t))) 1291ab64890Smrg#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t))) 1301ab64890Smrg#define _XkbTypedRealloc(o,n,t) \ 1311ab64890Smrg ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t)) 1321ab64890Smrg#define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t)) 1331ab64890Smrg#define _XkbFree(p) Xfree(p) 1341ab64890Smrg 1351ab64890Smrg_XFUNCPROTOBEGIN 1361ab64890Smrg 1371ab64890Smrgextern void _XkbReloadDpy( 1381ab64890Smrg Display * /* dpy */ 1391ab64890Smrg); 1401ab64890Smrg 1411ab64890Smrgextern KeySym _XKeycodeToKeysym( 1421ab64890Smrg Display* /* display */, 1431ab64890Smrg#if NeedWidePrototypes 1441ab64890Smrg unsigned int /* keycode */, 1451ab64890Smrg#else 1461ab64890Smrg KeyCode /* keycode */, 1471ab64890Smrg#endif 1481ab64890Smrg int /* index */ 1491ab64890Smrg); 1501ab64890Smrg 1511ab64890Smrgextern KeyCode _XKeysymToKeycode( 1521ab64890Smrg Display* /* display */, 1531ab64890Smrg KeySym /* keysym */ 1541ab64890Smrg); 1551ab64890Smrg 1561ab64890Smrgextern KeySym _XLookupKeysym( 1571ab64890Smrg XKeyEvent* /* key_event */, 1581ab64890Smrg int /* index */ 1591ab64890Smrg); 1601ab64890Smrg 1611ab64890Smrgextern int _XRefreshKeyboardMapping( 1621ab64890Smrg XMappingEvent* /* event_map */ 1631ab64890Smrg); 1641ab64890Smrg 1651ab64890Smrgextern unsigned _XKeysymToModifiers( 1661ab64890Smrg Display * /* dpy */, 1671ab64890Smrg KeySym /* ks */ 1681ab64890Smrg); 1691ab64890Smrg 1701ab64890Smrgextern int _XTranslateKey( 1711ab64890Smrg register Display * /* dpy */, 1721ab64890Smrg KeyCode /* keycode */, 1731ab64890Smrg register unsigned int /* modifiers */, 1741ab64890Smrg unsigned int * /* modifiers_return */, 1751ab64890Smrg KeySym * /* keysym_return */ 1761ab64890Smrg); 1771ab64890Smrg 1781ab64890Smrgextern int _XTranslateKeySym( 1791ab64890Smrg Display * /* dpy */, 1801ab64890Smrg register KeySym /* symbol */, 1811ab64890Smrg unsigned int /* modifiers */, 1821ab64890Smrg char * /* buffer */, 1831ab64890Smrg int /* nbytes */ 1841ab64890Smrg); 1851ab64890Smrg 1861ab64890Smrgextern int _XLookupString( 1871ab64890Smrg register XKeyEvent * /* event */, 1881ab64890Smrg char * /* buffer */, 1891ab64890Smrg int /* nbytes */, 1901ab64890Smrg KeySym * /* keysym */, 1911ab64890Smrg XComposeStatus * /* status */ 1921ab64890Smrg); 1931ab64890Smrg 1941ab64890Smrgextern void _XkbNoteCoreMapChanges( 1951ab64890Smrg XkbMapChangesRec * /* old */, 1961ab64890Smrg XMappingEvent * /* new */, 1971ab64890Smrg unsigned int /* wanted */ 1981ab64890Smrg); 1991ab64890Smrg 2001ab64890Smrgextern int _XkbInitReadBuffer( 2011ab64890Smrg Display * /* dpy */, 2021ab64890Smrg XkbReadBufferPtr /* buf */, 2031ab64890Smrg int /* size */ 2041ab64890Smrg); 2051ab64890Smrg 2061ab64890Smrgextern int _XkbSkipReadBufferData( 2071ab64890Smrg XkbReadBufferPtr /* from */, 2081ab64890Smrg int /* size */ 2091ab64890Smrg); 2101ab64890Smrg 2111ab64890Smrgextern int _XkbCopyFromReadBuffer( 2121ab64890Smrg XkbReadBufferPtr /* from */, 2131ab64890Smrg char * /* to */, 2141ab64890Smrg int /* size */ 2151ab64890Smrg); 2161ab64890Smrg 2171ab64890Smrg 2181ab64890Smrg#if defined(WORD64) || defined(LONG64) 2191ab64890Smrgextern int _XkbReadCopyData32( 2201ab64890Smrg int * /* from */, 2211ab64890Smrg long * /* to */, 2221ab64890Smrg int /* num_words */ 2231ab64890Smrg); 2241ab64890Smrg 2251ab64890Smrgextern int _XkbWriteCopyData32( 2261ab64890Smrg unsigned long * /* from */, 2271ab64890Smrg CARD32 * /* to */, 2281ab64890Smrg int /* num_words */ 2291ab64890Smrg); 2301ab64890Smrg 2311ab64890Smrgextern int _XkbReadBufferCopy32( 2321ab64890Smrg XkbReadBufferPtr /* from */, 2331ab64890Smrg long * /* to */, 2341ab64890Smrg int /* size */ 2351ab64890Smrg); 2361ab64890Smrg#else 2371ab64890Smrg#define _XkbReadCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4) 2381ab64890Smrg#define _XkbWriteCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4) 2391ab64890Smrg#define _XkbReadBufferCopy32(f,t,s) _XkbCopyFromReadBuffer(f,(char *)t,(s)*4) 2401ab64890Smrg#endif 2411ab64890Smrg 2421ab64890Smrg#ifndef NO_DEC_BINARY_COMPATIBILITY 2431ab64890Smrg#define XKB_FORCE_INT_KEYSYM 1 2441ab64890Smrg#endif 2451ab64890Smrg 2461ab64890Smrg#ifdef XKB_FORCE_INT_KEYSYM 2471ab64890Smrgextern int _XkbReadCopyKeySyms( 2481ab64890Smrg int * /* from */, 2491ab64890Smrg KeySym * /* to */, 2501ab64890Smrg int /* num_words */ 2511ab64890Smrg); 2521ab64890Smrg 2531ab64890Smrgextern int _XkbWriteCopyKeySyms( 2541ab64890Smrg KeySym * /* from */, 2551ab64890Smrg CARD32 * /* to */, 2561ab64890Smrg int /* num_words */ 2571ab64890Smrg); 2581ab64890Smrg 2591ab64890Smrgextern int _XkbReadBufferCopyKeySyms( 2601ab64890Smrg XkbReadBufferPtr /* from */, 2611ab64890Smrg#ifndef NO_DEC_BUG_FIX 2621ab64890Smrg KeySym * /* to */, 2631ab64890Smrg#else 2641ab64890Smrg long * /* to */, 2651ab64890Smrg#endif 2661ab64890Smrg int /* size */ 2671ab64890Smrg); 2681ab64890Smrg#else 2691ab64890Smrg#define _XkbReadCopyKeySyms(f,t,n) _XkbReadCopyData32(f,t,n) 2701ab64890Smrg#define _XkbWriteCopyKeySyms(f,t,n) _XkbWriteCopyData32(f,t,n) 2711ab64890Smrg#define _XkbReadBufferCopyKeySyms(f,t,s) _XkbReadBufferCopy32(f,t,s) 2721ab64890Smrg#endif 2731ab64890Smrg 2741ab64890Smrgextern char *_XkbPeekAtReadBuffer( 2751ab64890Smrg XkbReadBufferPtr /* from */, 2761ab64890Smrg int /* size */ 2771ab64890Smrg); 2781ab64890Smrg 2791ab64890Smrgextern char *_XkbGetReadBufferPtr( 2801ab64890Smrg XkbReadBufferPtr /* from */, 2811ab64890Smrg int /* size */ 2821ab64890Smrg); 2831ab64890Smrg#define _XkbGetTypedRdBufPtr(b,n,t) ((t *)_XkbGetReadBufferPtr(b,(n)*SIZEOF(t))) 2841ab64890Smrg 2851ab64890Smrgextern int _XkbFreeReadBuffer( 2861ab64890Smrg XkbReadBufferPtr /* buf */ 2871ab64890Smrg); 2881ab64890Smrg 2891ab64890Smrgextern Bool 2901ab64890Smrg_XkbGetReadBufferCountedString( 2911ab64890Smrg XkbReadBufferPtr /* buf */, 2921ab64890Smrg char ** /* rtrn */ 2931ab64890Smrg); 2941ab64890Smrg 2951ab64890Smrgextern char *_XkbGetCharset( 2961ab64890Smrg void 2971ab64890Smrg); 2981ab64890Smrg 2991ab64890Smrgextern int _XkbGetConverters( 3001ab64890Smrg const char * /* encoding_name */, 3011ab64890Smrg XkbConverters * /* cvt_rtrn */ 3021ab64890Smrg); 3031ab64890Smrg 3041ab64890Smrg#ifdef NEED_MAP_READERS 3051ab64890Smrg 3061ab64890Smrgextern Status _XkbReadGetMapReply( 3071ab64890Smrg Display * /* dpy */, 3081ab64890Smrg xkbGetMapReply * /* rep */, 3091ab64890Smrg XkbDescRec * /* xkb */, 3101ab64890Smrg int * /* nread_rtrn */ 3111ab64890Smrg); 3121ab64890Smrg 3131ab64890Smrgextern Status _XkbReadGetCompatMapReply( 3141ab64890Smrg Display * /* dpy */, 3151ab64890Smrg xkbGetCompatMapReply * /* rep */, 3161ab64890Smrg XkbDescPtr /* xkb */, 3171ab64890Smrg int * /* nread_rtrn */ 3181ab64890Smrg); 3191ab64890Smrg 3201ab64890Smrgextern Status _XkbReadGetIndicatorMapReply( 3211ab64890Smrg Display * /* dpy */, 3221ab64890Smrg xkbGetIndicatorMapReply * /* rep */, 3231ab64890Smrg XkbDescPtr /* xkb */, 3241ab64890Smrg int * /* nread_rtrn */ 3251ab64890Smrg); 3261ab64890Smrg 3271ab64890Smrgextern Status _XkbReadGetNamesReply( 3281ab64890Smrg Display * /* dpy */, 3291ab64890Smrg xkbGetNamesReply * /* rep */, 3301ab64890Smrg XkbDescPtr /* xkb */, 3311ab64890Smrg int * /* nread_rtrn */ 3321ab64890Smrg); 3331ab64890Smrg 3341ab64890Smrgextern Status _XkbReadGetGeometryReply( 3351ab64890Smrg Display * /* dpy */, 3361ab64890Smrg xkbGetGeometryReply * /* rep */, 3371ab64890Smrg XkbDescPtr /* xkb */, 3381ab64890Smrg int * /* nread_rtrn */ 3391ab64890Smrg); 3401ab64890Smrg 3411ab64890Smrg#endif 3421ab64890Smrg 3431ab64890Smrg_XFUNCPROTOEND 3441ab64890Smrg 3451ab64890Smrg#endif /* _XKBLIBINT_H_ */ 346