00001
00005 #ifndef __XKLABIER_CONFIG_H__
00006 #define __XKLABIER_CONFIG_H__
00007
00008 #include <libxklavier/xklavier.h>
00009
00013 #define XKL_MAX_CI_NAME_LENGTH 32
00014
00020 #define XKL_MAX_CI_SHORT_DESC_LENGTH 10
00021
00027 #define XKL_MAX_CI_DESC_LENGTH 192
00028
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033
00037 typedef struct _XklConfigItem
00038 {
00042 char name[XKL_MAX_CI_NAME_LENGTH];
00043
00047 char shortDescription[XKL_MAX_CI_DESC_LENGTH];
00048
00052 char description[XKL_MAX_CI_DESC_LENGTH];
00053 }
00054 XklConfigItem, *XklConfigItemPtr;
00055
00059 typedef struct _XklConfigRec
00060 {
00064 char *model;
00068 int numLayouts;
00072 char **layouts;
00076 int numVariants;
00080 char **variants;
00084 int numOptions;
00088 char **options;
00089 }
00090 XklConfigRec, *XklConfigRecPtr;
00099 extern void XklConfigInit( void );
00100
00104 extern void XklConfigTerm( void );
00105
00110 extern Bool XklConfigLoadRegistry( void );
00111
00115 extern void XklConfigFreeRegistry( void );
00128 typedef void ( *ConfigItemProcessFunc ) ( const XklConfigItemPtr configItem,
00129 void *userData );
00130
00137 typedef void ( *GroupProcessFunc ) ( const XklConfigItemPtr configItem,
00138 Bool allowMultipleSelection,
00139 void *userData );
00148 typedef int ( *XkbDescModifierFunc ) ( XkbDescPtr kbd, void *userData );
00154 extern void XklConfigEnumModels( ConfigItemProcessFunc func,
00155 void *userData );
00156
00162 extern void XklConfigEnumLayouts( ConfigItemProcessFunc func,
00163 void *userData );
00164
00171 extern void XklConfigEnumLayoutVariants( const char *layoutName,
00172 ConfigItemProcessFunc func,
00173 void *userData );
00174
00180 extern void XklConfigEnumOptionGroups( GroupProcessFunc func,
00181 void *userData );
00182
00190 extern void XklConfigEnumOptions( const char *optionGroupName,
00191 ConfigItemProcessFunc func,
00192 void *userData );
00193
00207 extern Bool XklConfigFindModel( XklConfigItemPtr ptr );
00208
00215 extern Bool XklConfigFindLayout( XklConfigItemPtr ptr );
00216
00225 extern Bool XklConfigFindVariant( const char *layoutName,
00226 XklConfigItemPtr ptr );
00227
00237 extern Bool XklConfigFindOptionGroup( XklConfigItemPtr ptr,
00238 Bool * allowMultipleSelection );
00239
00248 extern Bool XklConfigFindOption( const char *optionGroupName,
00249 XklConfigItemPtr ptr );
00261 extern Bool XklMultipleLayoutsSupported( void );
00272 extern Bool XklConfigActivate( const XklConfigRecPtr data,
00273 XkbDescModifierFunc fun, void *userData );
00274
00281 extern int XklSetKeyAsSwitcher( XkbDescPtr kbd, void *userData );
00282
00288 extern Bool XklConfigGetFromServer( XklConfigRecPtr data );
00289
00296 extern Bool XklConfigGetFromBackup( XklConfigRecPtr data );
00297
00308 extern Bool XklConfigWriteXKMFile( const char *fileName,
00309 const XklConfigRecPtr data,
00310 XkbDescModifierFunc fun,
00311 void *userData );
00312
00329 extern Bool XklGetNamesProp( Atom rulesAtomName,
00330 char **rulesFileOut,
00331 XklConfigRecPtr configOut );
00332
00340 extern Bool XklSetNamesProp( Atom rulesAtomName,
00341 char *rulesFile, XklConfigRecPtr config );
00342
00348 extern Bool XklBackupNamesProp( );
00349
00355 extern Bool XklRestoreNamesProp( );
00356
00369 extern void XklConfigRecInit( XklConfigRecPtr data );
00370
00375 extern void XklConfigRecReset( XklConfigRecPtr data );
00376
00381 extern void XklConfigRecDestroy( XklConfigRecPtr data );
00382
00385 #ifdef __cplusplus
00386 }
00387 #endif
00388
00389 #endif