00001
00005 #ifndef __XKLAVIER_H__
00006 #define __XKLAVIER_H__
00007
00008 #include <stdarg.h>
00009
00010 #include <X11/Xlib.h>
00011 #include <X11/XKBlib.h>
00012
00013 #ifdef __cplusplus
00014 extern "C"
00015 {
00016 #endif
00017
00018 typedef enum
00019 {
00023 GROUP_CHANGED,
00027 INDICATORS_CHANGED
00028 }
00029 XklStateChange;
00030
00034 typedef struct
00035 {
00037 int group;
00039 unsigned indicators;
00040 }
00041 XklState;
00042
00056 extern int XklInit( Display * dpy );
00057
00061 extern int XklTerm( void );
00062
00074 extern int XklStartListen( void );
00075
00080 extern int XklStopListen( void );
00081
00086 extern int XklPauseListen( void );
00087
00092 extern int XklResumeListen( void );
00093
00100 extern Bool XklGrabKey( int key, unsigned modifiers );
00101
00108 extern Bool XklUngrabKey( int key, unsigned modifiers );
00109
00117 extern int XklFilterEvents( XEvent * evt );
00118
00122 extern void XklAllowOneSwitchToSecondaryGroup( void );
00123
00134 extern Window XklGetCurrentWindow( void );
00135
00140 extern XklState *XklGetCurrentState( void );
00141
00153 extern char *XklGetWindowTitle( Window w );
00154
00162 extern Bool XklGetState( Window win, XklState * state_return );
00163
00168 extern void XklDelState( Window win );
00169
00175 extern void XklSaveState( Window win, XklState * state );
00176
00184 extern void XklSetTransparent( Window win, Bool transparent );
00185
00191 extern Bool XklIsTransparent( Window win );
00192
00199 extern Bool XklIsSameApp( Window win1, Window win2 );
00200
00212 extern unsigned XklGetNumGroups( void );
00213
00219 extern const char **XklGetGroupNames( void );
00220
00226 extern const char **XklGetIndicatorNames( void );
00227
00239 extern int XklGetNextGroup( void );
00240
00245 extern int XklGetPrevGroup( void );
00246
00251 extern int XklGetRestoreGroup( void );
00252
00260 extern void XklLockGroup( int group );
00261
00274 typedef void ( *XklConfigCallback ) ( void *userData );
00275
00282 extern int XklRegisterConfigCallback( XklConfigCallback fun,
00283 void *userData );
00284
00296 typedef int ( *XklWinCallback ) ( Window win, Window parent,
00297 void *userData );
00298
00305 extern int XklRegisterWindowCallback( XklWinCallback fun, void *userData );
00306
00316 typedef void ( *XklStateCallback ) ( XklStateChange changeType, int group,
00317 Bool restore, void *userData );
00318
00325 extern int XklRegisterStateCallback( XklStateCallback fun, void *userData );
00326
00338 extern void XklSetGroupPerApp( Bool isGlobal );
00339
00343 extern Bool XklIsGroupPerApp( void );
00344
00349 extern void XklSetIndicatorsHandling( Bool whetherHandle );
00350
00354 extern Bool XklGetIndicatorsHandling( void );
00355
00362 extern void XklSetSecondaryGroupsMask( int mask );
00363
00367 extern int XklGetSecondaryGroupsMask( void );
00368
00374 extern void XklSetDefaultGroup( int group );
00375
00381 extern int XklGetDefaultGroup( void );
00382
00393 extern const char *XklGetLastError( void );
00394
00405 extern void _XklDebug( const char file[], const char function[], int level,
00406 const char format[], ... );
00407
00422 typedef void ( *XklLogAppender ) ( const char file[], const char function[],
00423 int level, const char format[],
00424 va_list args );
00425
00437 extern void XklDefaultLogAppender( const char file[], const char function[],
00438 int level, const char format[],
00439 va_list args );
00440
00445 extern void XklSetLogAppender( XklLogAppender fun );
00446
00452 extern void XklSetDebugLevel( int level );
00453
00460 #define XklDebug( level, format, args... ) \
00461 _XklDebug( __FILE__, __func__, level, format, ## args )
00462
00465 #ifdef __cplusplus
00466 }
00467 #endif
00468
00469 #endif