00001
00005 #ifndef __XKLAVIER_H__
00006 #define __XKLAVIER_H__
00007
00008 #include <stdarg.h>
00009
00010 #include <X11/Xlib.h>
00011
00012 #ifdef __cplusplus
00013 extern "C"
00014 {
00015 #endif
00016
00017 typedef enum
00018 {
00022 GROUP_CHANGED,
00026 INDICATORS_CHANGED
00027 }
00028 XklStateChange;
00029
00033 typedef struct
00034 {
00036 int group;
00038 unsigned indicators;
00039 }
00040 XklState;
00041
00055 extern int XklInit( Display * dpy );
00056
00060 extern int XklTerm( void );
00061
00073 extern int XklStartListen( void );
00074
00079 extern int XklStopListen( void );
00080
00085 extern int XklPauseListen( void );
00086
00091 extern int XklResumeListen( void );
00092
00099 extern Bool XklGrabKey( int key, unsigned modifiers );
00100
00107 extern Bool XklUngrabKey( int key, unsigned modifiers );
00108
00116 extern int XklFilterEvents( XEvent * evt );
00117
00121 extern void XklAllowOneSwitchToSecondaryGroup( void );
00122
00133 extern Window XklGetCurrentWindow( void );
00134
00139 extern XklState *XklGetCurrentState( void );
00140
00152 extern char *XklGetWindowTitle( Window w );
00153
00161 extern Bool XklGetState( Window win, XklState * state_return );
00162
00167 extern void XklDelState( Window win );
00168
00174 extern void XklSaveState( Window win, XklState * state );
00175
00183 extern void XklSetTransparent( Window win, Bool transparent );
00184
00190 extern Bool XklIsTransparent( Window win );
00191
00198 extern Bool XklIsSameApp( Window win1, Window win2 );
00199
00211 extern unsigned XklGetNumGroups( void );
00212
00218 extern const char **XklGetGroupNames( void );
00219
00225 extern const char **XklGetIndicatorNames( void );
00226
00238 extern int XklGetNextGroup( void );
00239
00244 extern int XklGetPrevGroup( void );
00245
00250 extern int XklGetRestoreGroup( void );
00251
00259 extern void XklLockGroup( int group );
00260
00273 typedef void ( *XklConfigCallback ) ( void *userData );
00274
00281 extern int XklRegisterConfigCallback( XklConfigCallback fun,
00282 void *userData );
00283
00295 typedef int ( *XklWinCallback ) ( Window win, Window parent,
00296 void *userData );
00297
00304 extern int XklRegisterWindowCallback( XklWinCallback fun, void *userData );
00305
00315 typedef void ( *XklStateCallback ) ( XklStateChange changeType, int group,
00316 Bool restore, void *userData );
00317
00324 extern int XklRegisterStateCallback( XklStateCallback fun, void *userData );
00325
00337 extern void XklSetGroupPerApp( Bool isGlobal );
00338
00342 extern Bool XklIsGroupPerApp( void );
00343
00348 extern void XklSetIndicatorsHandling( Bool whetherHandle );
00349
00353 extern Bool XklGetIndicatorsHandling( void );
00354
00361 extern void XklSetSecondaryGroupsMask( int mask );
00362
00366 extern int XklGetSecondaryGroupsMask( void );
00367
00373 extern void XklSetDefaultGroup( int group );
00374
00380 extern int XklGetDefaultGroup( void );
00381
00392 extern const char *XklGetLastError( void );
00393
00404 extern void _XklDebug( const char file[], const char function[], int level,
00405 const char format[], ... );
00406
00421 typedef void ( *XklLogAppender ) ( const char file[], const char function[],
00422 int level, const char format[],
00423 va_list args );
00424
00436 extern void XklDefaultLogAppender( const char file[], const char function[],
00437 int level, const char format[],
00438 va_list args );
00439
00444 extern void XklSetLogAppender( XklLogAppender fun );
00445
00451 extern void XklSetDebugLevel( int level );
00452
00459 #ifdef G_HAVE_ISO_VARARGS
00460 #define XklDebug( level, ... ) \
00461 _XklDebug( __FILE__, __func__, level, __VA_ARGS__ )
00462 #elif defined(G_HAVE_GNUC_VARARGS)
00463 #define XklDebug( level, format, args... ) \
00464 _XklDebug( __FILE__, __func__, level, format, ## args )
00465 #else
00466 #define XklDebug( level, ... ) \
00467 _XklDebug( __FILE__, __func__, level, __VA_ARGS__ )
00468 #endif
00469
00472 #ifdef __cplusplus
00473 }
00474 #endif
00475
00476 #endif