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