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
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
00540
00541 #endif