XKBlibint.h revision eb411b4b
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_ 281ab64890Smrg#define _XKBLIBINT_H_ 291ab64890Smrg 301ab64890Smrg#include <X11/Xutil.h> 311ab64890Smrg#include <X11/XKBlib.h> 321ab64890Smrg 331ab64890Smrg#define XkbMapPending (1<<0) 341ab64890Smrg#define XkbXlibNewKeyboard (1<<1) 351ab64890Smrg 361ab64890Smrgtypedef int (*XkbKSToMBFunc)( 371ab64890Smrg XPointer /* priv */, 381ab64890Smrg KeySym /* sym */, 391ab64890Smrg char * /* buf */, 401ab64890Smrg int /* len */, 411ab64890Smrg int * /* extra_rtrn */ 421ab64890Smrg); 431ab64890Smrg 441ab64890Smrgtypedef KeySym (*XkbMBToKSFunc)( 451ab64890Smrg XPointer /* priv */, 461ab64890Smrg char * /* buf */, 471ab64890Smrg int /* len */, 481ab64890Smrg Status * /* status */ 491ab64890Smrg); 501ab64890Smrg 511ab64890Smrgtypedef KeySym (*XkbToUpperFunc)( 521ab64890Smrg KeySym /* sym */ 531ab64890Smrg); 541ab64890Smrg 551ab64890Smrgtypedef struct _XkbConverters { 561ab64890Smrg XkbKSToMBFunc KSToMB; 571ab64890Smrg XPointer KSToMBPriv; 581ab64890Smrg XkbMBToKSFunc MBToKS; 591ab64890Smrg XPointer MBToKSPriv; 601ab64890Smrg XkbToUpperFunc KSToUpper; 611ab64890Smrg} XkbConverters; 621ab64890Smrg 631ab64890Smrgextern XkbInternAtomFunc _XkbInternAtomFunc; 641ab64890Smrgextern XkbGetAtomNameFunc _XkbGetAtomNameFunc; 651ab64890Smrg 661ab64890Smrgtypedef struct _XkbInfoRec { 671ab64890Smrg unsigned flags; 681ab64890Smrg unsigned xlib_ctrls; 691ab64890Smrg XExtCodes *codes; 701ab64890Smrg int srv_major; 711ab64890Smrg int srv_minor; 721ab64890Smrg unsigned selected_events; 731ab64890Smrg unsigned short selected_nkn_details; 741ab64890Smrg unsigned short selected_map_details; 751ab64890Smrg XkbDescRec *desc; 761ab64890Smrg XkbMapChangesRec changes; 771ab64890Smrg Atom composeLED; 781ab64890Smrg XkbConverters cvt; 791ab64890Smrg XkbConverters latin1cvt; 801ab64890Smrg} XkbInfoRec, *XkbInfoPtr; 811ab64890Smrg 821ab64890Smrg 831ab64890Smrg#define _XkbUnavailable(d) \ 841ab64890Smrg (((d)->flags&XlibDisplayNoXkb) ||\ 851ab64890Smrg ((!(d)->xkb_info || (!(d)->xkb_info->desc)) && !_XkbLoadDpy(d))) 861ab64890Smrg 871ab64890Smrg#define _XkbCheckPendingRefresh(d,xi) {\ 881ab64890Smrg if ((xi)->flags&XkbXlibNewKeyboard)\ 891ab64890Smrg _XkbReloadDpy((d));\ 901ab64890Smrg else if ((xi)->flags&XkbMapPending) {\ 911ab64890Smrg if (XkbGetMapChanges((d),(xi)->desc, &(xi)->changes)==Success) {\ 921ab64890Smrg LockDisplay((d));\ 931ab64890Smrg (xi)->changes.changed= 0;\ 941ab64890Smrg UnlockDisplay((d));\ 951ab64890Smrg }\ 961ab64890Smrg }\ 971ab64890Smrg} 981ab64890Smrg 991ab64890Smrg#define _XkbNeedModmap(i) ((!(i)->desc->map)||(!(i)->desc->map->modmap)) 1001ab64890Smrg 1011ab64890Smrg /* 1021ab64890Smrg * mask of the events that the "invisible" XKB support in Xlib needs 1031ab64890Smrg */ 1041ab64890Smrg#define XKB_XLIB_MAP_MASK (XkbAllClientInfoMask) 1051ab64890Smrg 1061ab64890Smrg /* 10761b2299dSmrg * Handy helper macros 1081ab64890Smrg */ 1091ab64890Smrg#define XKB_INSURE_SIZE(f,t,nNum,oNum) {\ 1101ab64890Smrg if ((f)==NULL) \ 1111ab64890Smrg (f)=(t *)Xmalloc(sizeof(t)*(nNum));\ 1121ab64890Smrg else if ((nNum)<(oNum))\ 1131ab64890Smrg (f)=(t *)Xrealloc((f),sizeof(t)*(nNum));\ 1141ab64890Smrg } 1151ab64890Smrg 1161ab64890Smrgtypedef struct _XkbReadBuffer { 1171ab64890Smrg int error; 1181ab64890Smrg int size; 1191ab64890Smrg char *start; 1201ab64890Smrg char *data; 1211ab64890Smrg} XkbReadBufferRec,*XkbReadBufferPtr; 1221ab64890Smrg 1231ab64890Smrg#define _XkbAlloc(s) Xmalloc((s)) 1241ab64890Smrg#define _XkbCalloc(n,s) Xcalloc((n),(s)) 1251ab64890Smrg#define _XkbRealloc(o,s) Xrealloc((o),(s)) 1261ab64890Smrg#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t))) 1271ab64890Smrg#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t))) 1281ab64890Smrg#define _XkbTypedRealloc(o,n,t) \ 1291ab64890Smrg ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t)) 1301ab64890Smrg#define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t)) 1311ab64890Smrg#define _XkbFree(p) Xfree(p) 1321ab64890Smrg 1331ab64890Smrg_XFUNCPROTOBEGIN 1341ab64890Smrg 1351ab64890Smrgextern void _XkbReloadDpy( 1361ab64890Smrg Display * /* dpy */ 1371ab64890Smrg); 1381ab64890Smrg 1391ab64890Smrgextern KeySym _XKeycodeToKeysym( 1401ab64890Smrg Display* /* display */, 1411ab64890Smrg#if NeedWidePrototypes 1421ab64890Smrg unsigned int /* keycode */, 1431ab64890Smrg#else 1441ab64890Smrg KeyCode /* keycode */, 1451ab64890Smrg#endif 1461ab64890Smrg int /* index */ 1471ab64890Smrg); 1481ab64890Smrg 1491ab64890Smrgextern KeyCode _XKeysymToKeycode( 1501ab64890Smrg Display* /* display */, 1511ab64890Smrg KeySym /* keysym */ 1521ab64890Smrg); 1531ab64890Smrg 1541ab64890Smrgextern KeySym _XLookupKeysym( 1551ab64890Smrg XKeyEvent* /* key_event */, 1561ab64890Smrg int /* index */ 1571ab64890Smrg); 1581ab64890Smrg 1591ab64890Smrgextern int _XRefreshKeyboardMapping( 16061b2299dSmrg XMappingEvent* /* event_map */ 1611ab64890Smrg); 1621ab64890Smrg 1631ab64890Smrgextern unsigned _XKeysymToModifiers( 1641ab64890Smrg Display * /* dpy */, 1651ab64890Smrg KeySym /* ks */ 1661ab64890Smrg); 1671ab64890Smrg 16861b2299dSmrgextern int _XTranslateKey( 1691ab64890Smrg register Display * /* dpy */, 1701ab64890Smrg KeyCode /* keycode */, 1711ab64890Smrg register unsigned int /* modifiers */, 1721ab64890Smrg unsigned int * /* modifiers_return */, 1731ab64890Smrg KeySym * /* keysym_return */ 1741ab64890Smrg); 1751ab64890Smrg 1761ab64890Smrgextern int _XTranslateKeySym( 1771ab64890Smrg Display * /* dpy */, 1781ab64890Smrg register KeySym /* symbol */, 1791ab64890Smrg unsigned int /* modifiers */, 1801ab64890Smrg char * /* buffer */, 1811ab64890Smrg int /* nbytes */ 1821ab64890Smrg); 1831ab64890Smrg 1841ab64890Smrgextern int _XLookupString( 1851ab64890Smrg register XKeyEvent * /* event */, 1861ab64890Smrg char * /* buffer */, 1871ab64890Smrg int /* nbytes */, 1881ab64890Smrg KeySym * /* keysym */, 1891ab64890Smrg XComposeStatus * /* status */ 1901ab64890Smrg); 1911ab64890Smrg 1921ab64890Smrgextern void _XkbNoteCoreMapChanges( 1931ab64890Smrg XkbMapChangesRec * /* old */, 1941ab64890Smrg XMappingEvent * /* new */, 1951ab64890Smrg unsigned int /* wanted */ 1961ab64890Smrg); 1971ab64890Smrg 1981ab64890Smrgextern int _XkbInitReadBuffer( 1991ab64890Smrg Display * /* dpy */, 2001ab64890Smrg XkbReadBufferPtr /* buf */, 2011ab64890Smrg int /* size */ 2021ab64890Smrg); 2031ab64890Smrg 2041ab64890Smrgextern int _XkbSkipReadBufferData( 2051ab64890Smrg XkbReadBufferPtr /* from */, 2061ab64890Smrg int /* size */ 2071ab64890Smrg); 2081ab64890Smrg 2091ab64890Smrgextern int _XkbCopyFromReadBuffer( 2101ab64890Smrg XkbReadBufferPtr /* from */, 2111ab64890Smrg char * /* to */, 2121ab64890Smrg int /* size */ 2131ab64890Smrg); 2141ab64890Smrg 2151ab64890Smrg 216eb411b4bSmrg#ifdef LONG64 2171ab64890Smrgextern int _XkbReadCopyData32( 2181ab64890Smrg int * /* from */, 2191ab64890Smrg long * /* to */, 2201ab64890Smrg int /* num_words */ 2211ab64890Smrg); 2221ab64890Smrg 2231ab64890Smrgextern int _XkbWriteCopyData32( 2241ab64890Smrg unsigned long * /* from */, 2251ab64890Smrg CARD32 * /* to */, 2261ab64890Smrg int /* num_words */ 2271ab64890Smrg); 2281ab64890Smrg 2291ab64890Smrgextern int _XkbReadBufferCopy32( 2301ab64890Smrg XkbReadBufferPtr /* from */, 2311ab64890Smrg long * /* to */, 2321ab64890Smrg int /* size */ 2331ab64890Smrg); 2341ab64890Smrg#else 2351ab64890Smrg#define _XkbReadCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4) 2361ab64890Smrg#define _XkbWriteCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4) 2371ab64890Smrg#define _XkbReadBufferCopy32(f,t,s) _XkbCopyFromReadBuffer(f,(char *)t,(s)*4) 2381ab64890Smrg#endif 2391ab64890Smrg 2401ab64890Smrg#ifndef NO_DEC_BINARY_COMPATIBILITY 2411ab64890Smrg#define XKB_FORCE_INT_KEYSYM 1 2421ab64890Smrg#endif 2431ab64890Smrg 2441ab64890Smrg#ifdef XKB_FORCE_INT_KEYSYM 2451ab64890Smrgextern int _XkbReadCopyKeySyms( 2461ab64890Smrg int * /* from */, 2471ab64890Smrg KeySym * /* to */, 2481ab64890Smrg int /* num_words */ 2491ab64890Smrg); 2501ab64890Smrg 2511ab64890Smrgextern int _XkbWriteCopyKeySyms( 2521ab64890Smrg KeySym * /* from */, 2531ab64890Smrg CARD32 * /* to */, 2541ab64890Smrg int /* num_words */ 2551ab64890Smrg); 2561ab64890Smrg 2571ab64890Smrgextern int _XkbReadBufferCopyKeySyms( 2581ab64890Smrg XkbReadBufferPtr /* from */, 2591ab64890Smrg#ifndef NO_DEC_BUG_FIX 2601ab64890Smrg KeySym * /* to */, 2611ab64890Smrg#else 2621ab64890Smrg long * /* to */, 2631ab64890Smrg#endif 2641ab64890Smrg int /* size */ 2651ab64890Smrg); 2661ab64890Smrg#else 2671ab64890Smrg#define _XkbReadCopyKeySyms(f,t,n) _XkbReadCopyData32(f,t,n) 2681ab64890Smrg#define _XkbWriteCopyKeySyms(f,t,n) _XkbWriteCopyData32(f,t,n) 2691ab64890Smrg#define _XkbReadBufferCopyKeySyms(f,t,s) _XkbReadBufferCopy32(f,t,s) 2701ab64890Smrg#endif 2711ab64890Smrg 2721ab64890Smrgextern char *_XkbPeekAtReadBuffer( 2731ab64890Smrg XkbReadBufferPtr /* from */, 2741ab64890Smrg int /* size */ 2751ab64890Smrg); 2761ab64890Smrg 2771ab64890Smrgextern char *_XkbGetReadBufferPtr( 2781ab64890Smrg XkbReadBufferPtr /* from */, 2791ab64890Smrg int /* size */ 2801ab64890Smrg); 2811ab64890Smrg#define _XkbGetTypedRdBufPtr(b,n,t) ((t *)_XkbGetReadBufferPtr(b,(n)*SIZEOF(t))) 2821ab64890Smrg 2831ab64890Smrgextern int _XkbFreeReadBuffer( 2841ab64890Smrg XkbReadBufferPtr /* buf */ 2851ab64890Smrg); 2861ab64890Smrg 2871ab64890Smrgextern Bool 2881ab64890Smrg_XkbGetReadBufferCountedString( 2891ab64890Smrg XkbReadBufferPtr /* buf */, 2901ab64890Smrg char ** /* rtrn */ 2911ab64890Smrg); 2921ab64890Smrg 2931ab64890Smrgextern char *_XkbGetCharset( 2941ab64890Smrg void 2951ab64890Smrg); 2961ab64890Smrg 2971ab64890Smrgextern int _XkbGetConverters( 2981ab64890Smrg const char * /* encoding_name */, 2991ab64890Smrg XkbConverters * /* cvt_rtrn */ 3001ab64890Smrg); 3011ab64890Smrg 3021ab64890Smrg#ifdef NEED_MAP_READERS 3031ab64890Smrg 3041ab64890Smrgextern Status _XkbReadGetMapReply( 3051ab64890Smrg Display * /* dpy */, 3061ab64890Smrg xkbGetMapReply * /* rep */, 3071ab64890Smrg XkbDescRec * /* xkb */, 3081ab64890Smrg int * /* nread_rtrn */ 3091ab64890Smrg); 3101ab64890Smrg 3111ab64890Smrgextern Status _XkbReadGetCompatMapReply( 3121ab64890Smrg Display * /* dpy */, 3131ab64890Smrg xkbGetCompatMapReply * /* rep */, 3141ab64890Smrg XkbDescPtr /* xkb */, 3151ab64890Smrg int * /* nread_rtrn */ 3161ab64890Smrg); 3171ab64890Smrg 3181ab64890Smrgextern Status _XkbReadGetIndicatorMapReply( 3191ab64890Smrg Display * /* dpy */, 3201ab64890Smrg xkbGetIndicatorMapReply * /* rep */, 3211ab64890Smrg XkbDescPtr /* xkb */, 3221ab64890Smrg int * /* nread_rtrn */ 3231ab64890Smrg); 3241ab64890Smrg 3251ab64890Smrgextern Status _XkbReadGetNamesReply( 3261ab64890Smrg Display * /* dpy */, 3271ab64890Smrg xkbGetNamesReply * /* rep */, 3281ab64890Smrg XkbDescPtr /* xkb */, 3291ab64890Smrg int * /* nread_rtrn */ 3301ab64890Smrg); 3311ab64890Smrg 3321ab64890Smrgextern Status _XkbReadGetGeometryReply( 3331ab64890Smrg Display * /* dpy */, 3341ab64890Smrg xkbGetGeometryReply * /* rep */, 3351ab64890Smrg XkbDescPtr /* xkb */, 3361ab64890Smrg int * /* nread_rtrn */ 3371ab64890Smrg); 3381ab64890Smrg 3391ab64890Smrg#endif 3401ab64890Smrg 3411ab64890Smrg_XFUNCPROTOEND 3421ab64890Smrg 3431ab64890Smrg#endif /* _XKBLIBINT_H_ */ 344