00001
00005 #ifndef __XKLAVIER_H__
00006 #define __XKLAVIER_H__
00007
00008 #include <stdarg.h>
00009
00010 #include <X11/Xlib.h>
00011
00012 #ifdef XKB_HEADERS_PRESENT
00013 #include <X11/XKBlib.h>
00014 #endif
00015
00016 #ifdef __cplusplus
00017 extern "C"
00018 {
00019 #endif
00020
00021 typedef enum
00022 {
00026 GROUP_CHANGED,
00030 INDICATORS_CHANGED
00031 }
00032 XklStateChange;
00033
00037 typedef struct
00038 {
00040 int group;
00042 unsigned indicators;
00043 }
00044 XklState;
00045
00059 extern int XklInit( Display * dpy );
00060
00064 extern int XklTerm( void );
00065
00077 extern int XklStartListen( void );
00078
00083 extern int XklStopListen( void );
00084
00089 extern int XklPauseListen( void );
00090
00095 extern int XklResumeListen( void );
00096
00103 extern Bool XklGrabKey( int key, unsigned modifiers );
00104
00111 extern Bool XklUngrabKey( int key, unsigned modifiers );
00112
00120 extern int XklFilterEvents( XEvent * evt );
00121
00125 extern void XklAllowOneSwitchToSecondaryGroup( void );
00126
00137 extern Window XklGetCurrentWindow( void );
00138
00143 extern XklState *XklGetCurrentState( void );
00144
00156 extern char *XklGetWindowTitle( Window w );
00157
00165 extern Bool XklGetState( Window win, XklState * state_return );
00166
00171 extern void XklDelState( Window win );
00172
00178 extern void XklSaveState( Window win, XklState * state );
00179
00187 extern void XklSetTransparent( Window win, Bool transparent );
00188
00194 extern Bool XklIsTransparent( Window win );
00195
00202 extern Bool XklIsSameApp( Window win1, Window win2 );
00203
00215 extern unsigned XklGetNumGroups( void );
00216
00222 extern const char **XklGetGroupNames( void );
00223
00229 extern const char **XklGetIndicatorNames( void );
00230
00242 extern int XklGetNextGroup( void );
00243
00248 extern int XklGetPrevGroup( void );
00249
00254 extern int XklGetRestoreGroup( void );
00255
00263 extern void XklLockGroup( int group );
00264
00277 typedef void ( *XklConfigCallback ) ( void *userData );
00278
00285 extern int XklRegisterConfigCallback( XklConfigCallback fun,
00286 void *userData );
00287
00299 typedef int ( *XklWinCallback ) ( Window win, Window parent,
00300 void *userData );
00301
00308 extern int XklRegisterWindowCallback( XklWinCallback fun, void *userData );
00309
00319 typedef void ( *XklStateCallback ) ( XklStateChange changeType, int group,
00320 Bool restore, void *userData );
00321
00328 extern int XklRegisterStateCallback( XklStateCallback fun, void *userData );
00329
00341 extern void XklSetGroupPerApp( Bool isGlobal );
00342
00346 extern Bool XklIsGroupPerApp( void );
00347
00352 extern void XklSetIndicatorsHandling( Bool whetherHandle );
00353
00357 extern Bool XklGetIndicatorsHandling( void );
00358
00365 extern void XklSetSecondaryGroupsMask( int mask );
00366
00370 extern int XklGetSecondaryGroupsMask( void );
00371
00377 extern void XklSetDefaultGroup( int group );
00378
00384 extern int XklGetDefaultGroup( void );
00385
00396 extern const char *XklGetLastError( void );
00397
00408 extern void _XklDebug( const char file[], const char function[], int level,
00409 const char format[], ... );
00410
00425 typedef void ( *XklLogAppender ) ( const char file[], const char function[],
00426 int level, const char format[],
00427 va_list args );
00428
00440 extern void XklDefaultLogAppender( const char file[], const char function[],
00441 int level, const char format[],
00442 va_list args );
00443
00448 extern void XklSetLogAppender( XklLogAppender fun );
00449
00455 extern void XklSetDebugLevel( int level );
00456
00463 #ifdef G_HAVE_ISO_VARARGS
00464 #define XklDebug( level, ... ) \
00465 _XklDebug( __FILE__, __func__, level, __VA_ARGS__ )
00466 #elif defined(G_HAVE_GNUC_VARARGS)
00467 #define XklDebug( level, format, args... ) \
00468 _XklDebug( __FILE__, __func__, level, format, ## args )
00469 #else
00470 #define XklDebug( level, ... ) \
00471 _XklDebug( __FILE__, __func__, level, __VA_ARGS__ )
00472 #endif
00473
00476 #ifdef __cplusplus
00477 }
00478 #endif
00479
00480 #endif