Main Page | Modules | Class List | File List | Class Members | File Members

xklavier.h

Go to the documentation of this file.
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 #define XKLF_CAN_TOGGLE_INDICATORS 0x01
00034 
00037 #define XKLF_CAN_OUTPUT_CONFIG_AS_ASCII 0x02
00038   
00042 #define XKLF_CAN_OUTPUT_CONFIG_AS_BINARY 0x04
00043 
00047 #define XKLF_MULTIPLE_LAYOUTS_SUPPORTED 0x08
00048 
00054 #define XKLF_REQUIRES_MANUAL_LAYOUT_MANAGEMENT 0x10
00055 
00059   typedef struct
00060   {
00062     int group;
00064     unsigned indicators;
00065   }
00066   XklState;
00067 
00081   extern int XklInit( Display * dpy );
00082 
00086   extern int XklTerm( void );
00087 
00092   extern const char *XklGetBackendName( void );
00093 
00099   extern int XklGetBackendFeatures( void );
00111 #define XKLL_MANAGE_WINDOW_STATES   0x01
00112 
00116 #define XKLL_TRACK_KEYBOARD_STATE 0x02
00117 
00122 #define XKLL_MANAGE_LAYOUTS  0x04
00123 
00129   extern int XklStartListen( int what );
00130 
00135   extern int XklStopListen( void );
00136 
00141   extern int XklPauseListen( void );
00142 
00147   extern int XklResumeListen( void );
00148 
00155   extern Bool XklGrabKey( int key, unsigned modifiers );
00156 
00163   extern Bool XklUngrabKey( int key, unsigned modifiers );
00164 
00172   extern int XklFilterEvents( XEvent * evt );
00173 
00177   extern void XklAllowOneSwitchToSecondaryGroup( void );
00178 
00189   extern Window XklGetCurrentWindow( void );
00190 
00195   extern XklState *XklGetCurrentState( void );
00196 
00208   extern char *XklGetWindowTitle( Window w );
00209 
00217   extern Bool XklGetState( Window win, XklState * state_return );
00218 
00223   extern void XklDelState( Window win );
00224 
00230   extern void XklSaveState( Window win, XklState * state );
00231 
00239   extern void XklSetTransparent( Window win, Bool transparent );
00240 
00246   extern Bool XklIsTransparent( Window win );
00247 
00254   extern Bool XklIsSameApp( Window win1, Window win2 );
00255 
00267   extern unsigned XklGetNumGroups( void );
00268 
00274   extern const char **XklGetGroupNames( void );
00275 
00281   extern const char **XklGetIndicatorNames( void );
00282 
00294   extern int XklGetNextGroup( void );
00295 
00300   extern int XklGetPrevGroup( void );
00301 
00306   extern int XklGetRestoreGroup( void );
00307 
00315   extern void XklLockGroup( int group );
00316 
00329   typedef void ( *XklConfigCallback ) ( void *userData );
00330 
00337   extern int XklRegisterConfigCallback( XklConfigCallback fun,
00338                                         void *userData );
00339 
00351   typedef int ( *XklWinCallback ) ( Window win, Window parent,
00352                                     void *userData );
00353 
00360   extern int XklRegisterWindowCallback( XklWinCallback fun, void *userData );
00361 
00371   typedef void ( *XklStateCallback ) ( XklStateChange changeType, int group,
00372                                        Bool restore, void *userData );
00373 
00380   extern int XklRegisterStateCallback( XklStateCallback fun, void *userData );
00381 
00393   extern void XklSetGroupPerApp( Bool isGlobal );
00394 
00398   extern Bool XklIsGroupPerApp( void );
00399 
00404   extern void XklSetIndicatorsHandling( Bool whetherHandle );
00405 
00409   extern Bool XklGetIndicatorsHandling( void );
00410 
00417   extern void XklSetSecondaryGroupsMask( int mask );
00418 
00422   extern int XklGetSecondaryGroupsMask( void );
00423 
00429   extern void XklSetDefaultGroup( int group );
00430 
00436   extern int XklGetDefaultGroup( void );
00437 
00448   extern const char *XklGetLastError( void );
00449 
00460   extern void _XklDebug( const char file[], const char function[], int level,
00461                          const char format[], ... );
00462 
00477   typedef void ( *XklLogAppender ) ( const char file[], const char function[],
00478                                      int level, const char format[],
00479                                      va_list args );
00480 
00492   extern void XklDefaultLogAppender( const char file[], const char function[],
00493                                      int level, const char format[],
00494                                      va_list args );
00495 
00500   extern void XklSetLogAppender( XklLogAppender fun );
00501 
00507   extern void XklSetDebugLevel( int level );
00508 
00509 /* Just to make doxygen happy - two block with/without @param format */
00510 #if defined(G_HAVE_GNUC_VARARGS)
00511 
00517 #else
00518 
00523 #endif
00524 #ifdef G_HAVE_ISO_VARARGS
00525 #define XklDebug( level, ... ) \
00526   _XklDebug( __FILE__, __func__, level, __VA_ARGS__ )
00527 #elif defined(G_HAVE_GNUC_VARARGS)
00528 #define XklDebug( level, format, args... ) \
00529    _XklDebug( __FILE__, __func__, level, format, ## args )
00530 #else
00531 #define XklDebug( level, ... ) \
00532   _XklDebug( __FILE__, __func__, level, __VA_ARGS__ )
00533 #endif
00534 
00537 #ifdef __cplusplus
00538 }
00539 #endif                          /* __cplusplus */
00540 
00541 #endif

Generated on Sun Nov 21 18:35:40 2004 for libxklavier by  doxygen 1.3.9.1