Blame libxklavier/xklavier_private.h

Packit Service 93d855
/*
Packit Service 93d855
 * Copyright (C) 2002-2006 Sergey V. Udaltsov <svu@gnome.org>
Packit Service 93d855
 *
Packit Service 93d855
 * This library is free software; you can redistribute it and/or
Packit Service 93d855
 * modify it under the terms of the GNU Lesser General Public
Packit Service 93d855
 * License as published by the Free Software Foundation; either
Packit Service 93d855
 * version 2 of the License, or (at your option) any later version.
Packit Service 93d855
 *
Packit Service 93d855
 * This library is distributed in the hope that it will be useful,
Packit Service 93d855
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 93d855
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 93d855
 * Lesser General Public License for more details.
Packit Service 93d855
 *
Packit Service 93d855
 * You should have received a copy of the GNU Lesser General Public
Packit Service 93d855
 * License along with this library; if not, write to the
Packit Service 93d855
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit Service 93d855
 * Boston, MA 02111-1307, USA.
Packit Service 93d855
 */
Packit Service 93d855
Packit Service 93d855
#ifndef __XKLAVIER_PRIVATE_H__
Packit Service 93d855
#define __XKLAVIER_PRIVATE_H__
Packit Service 93d855
Packit Service 93d855
#include <stdio.h>
Packit Service 93d855
Packit Service 93d855
#include <libxml/xpath.h>
Packit Service 93d855
Packit Service 93d855
#include <libxklavier/xklavier.h>
Packit Service 93d855
Packit Service 93d855
enum { WM_NAME,
Packit Service 93d855
	WM_STATE,
Packit Service 93d855
	XKLAVIER_STATE,
Packit Service 93d855
	XKLAVIER_TRANSPARENT,
Packit Service 93d855
	XKLAVIER_ALLOW_SECONDARY,
Packit Service 93d855
	TOTAL_ATOMS
Packit Service 93d855
};
Packit Service 93d855
Packit Service 93d855
#define XKL_NUMBER_OF_REGISTRY_DOCS 2
Packit Service 93d855
Packit Service 93d855
/* We have 3 values in XklEngineListenModes */
Packit Service 93d855
enum {
Packit Service 93d855
	XKLL_MANAGE_WINDOW_STATES_OFFSET = 0,
Packit Service 93d855
	XKLL_TRACK_KEYBOARD_STATE_OFFSET,
Packit Service 93d855
	XKLL_MANAGE_LAYOUTS_OFFSET,
Packit Service 93d855
	XKLL_NUMBER_OF_LISTEN_MODES
Packit Service 93d855
};
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
struct _XklEnginePrivate {
Packit Service 93d855
Packit Service 93d855
	gboolean group_per_toplevel_window;
Packit Service 93d855
Packit Service 93d855
	gboolean handle_indicators;
Packit Service 93d855
Packit Service 93d855
	gboolean skip_one_restore;
Packit Service 93d855
Packit Service 93d855
	gboolean skip_one_save;
Packit Service 93d855
Packit Service 93d855
	gint default_group;
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Separate counter for each of XklEngineListenModes!
Packit Service 93d855
	 */
Packit Service 93d855
	guchar listener_type_counters[XKLL_NUMBER_OF_LISTEN_MODES];
Packit Service 93d855
#define xkl_engine_is_listening_for(engine, type) (xkl_engine_priv((engine), listener_type_counters)[type##_OFFSET] > 0)
Packit Service 93d855
Packit Service 93d855
	guint secondary_groups_mask;
Packit Service 93d855
Packit Service 93d855
	Window root_window;
Packit Service 93d855
Packit Service 93d855
	Window prev_toplvl_win;
Packit Service 93d855
Packit Service 93d855
	Window curr_toplvl_win;
Packit Service 93d855
Packit Service 93d855
	XErrorHandler default_error_handler;
Packit Service 93d855
Packit Service 93d855
	Status last_error_code;
Packit Service 93d855
Packit Service 93d855
	XklState curr_state;
Packit Service 93d855
Packit Service 93d855
	gboolean critical_section;
Packit Service 93d855
Packit Service 93d855
	Atom atoms[TOTAL_ATOMS];
Packit Service 93d855
Packit Service 93d855
	Display *display;
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Backend name
Packit Service 93d855
	 */
Packit Service 93d855
	const gchar *backend_id;
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Functions supported by the backend, combination of XKLF_* constants
Packit Service 93d855
	 */
Packit Service 93d855
	guint8 features;
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Activates the configuration.
Packit Service 93d855
	 * xkb: create proper the XkbDescRec and send it to the server
Packit Service 93d855
	 * xmodmap: save the property, init layout #1
Packit Service 93d855
	 */
Packit Service 93d855
	 gboolean(*activate_config_rec) (XklEngine * engine,
Packit Service 93d855
					 const XklConfigRec * data);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Background-specific initialization.
Packit Service 93d855
	 * xkb: XkbInitAtoms - init internal xkb atoms table
Packit Service 93d855
	 * xmodmap: void.
Packit Service 93d855
	 */
Packit Service 93d855
	void (*init_config_registry) (XklConfigRegistry * config);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Loads the registry tree into DOM (using whatever path(s))
Packit Service 93d855
	 * The XklVTConfigFreeRegistry is static - no virtualization necessary.
Packit Service 93d855
	 * xkb: loads xml from XKB_BASE+"/rules/"+ruleset+".xml"
Packit Service 93d855
	 * xmodmap: loads xml from XMODMAP_BASE+"/"+ruleset+".xml"
Packit Service 93d855
	 */
Packit Service 93d855
	 gboolean(*load_config_registry) (XklConfigRegistry * config,
Packit Service 93d855
					  gboolean if_extras_needed);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Write the configuration into the file (binary/textual)
Packit Service 93d855
	 * xkb: write xkb or xkm file
Packit Service 93d855
	 * xmodmap: if text requested, just dump XklConfigRec to the 
Packit Service 93d855
	 * file - not really useful. If binary - fail (not supported)
Packit Service 93d855
	 */
Packit Service 93d855
	 gboolean(*write_config_rec_to_file) (XklEngine * engine,
Packit Service 93d855
					      const gchar * file_name,
Packit Service 93d855
					      const XklConfigRec * data,
Packit Service 93d855
					      const gboolean binary);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Get the list of the group names
Packit Service 93d855
	 * xkb: return cached list of the group names
Packit Service 93d855
	 * xmodmap: return the list of layouts from the internal XklConfigRec
Packit Service 93d855
	 */
Packit Service 93d855
	const gchar **(*get_groups_names) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Get the list of the indicators names
Packit Service 93d855
	 * xkb: return cached list of the indicators names
Packit Service 93d855
	 * xmodmap: return NULL
Packit Service 93d855
	 */
Packit Service 93d855
	const gchar **(*get_indicators_names) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Get the maximum number of loaded groups
Packit Service 93d855
	 * xkb: returns 1 or XkbNumKbdGroups
Packit Service 93d855
	 * xmodmap: return 0
Packit Service 93d855
	 */
Packit Service 93d855
	 guint(*get_max_num_groups) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Get the number of loaded groups
Packit Service 93d855
	 * xkb: return from the cached XkbDesc
Packit Service 93d855
	 * xmodmap: return number of layouts from internal XklConfigRec
Packit Service 93d855
	 */
Packit Service 93d855
	 guint(*get_num_groups) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Switches the keyboard to the group N
Packit Service 93d855
	 * xkb: simple one-liner to call the XKB function
Packit Service 93d855
	 * xmodmap: changes the root window property 
Packit Service 93d855
	 * (listener invokes xmodmap with appropriate config file).
Packit Service 93d855
	 */
Packit Service 93d855
	void (*lock_group) (XklEngine * engine, gint group);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Handles X events.
Packit Service 93d855
	 * xkb: XkbEvent handling
Packit Service 93d855
	 * xmodmap: keep track on the root window properties. What else can we do?
Packit Service 93d855
	 */
Packit Service 93d855
	 gint(*process_x_event) (XklEngine * engine, XEvent * xev);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Handles X errors.
Packit Service 93d855
	 * return 0 if further processing is needed
Packit Service 93d855
	 *        1 if error was handled
Packit Service 93d855
	 */
Packit Service 93d855
	 gint(*process_x_error) (XklEngine * engine, XErrorEvent * xerev);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Flushes the cached server config info.
Packit Service 93d855
	 * xkb: frees XkbDesc
Packit Service 93d855
	 * xmodmap: frees internal XklConfigRec
Packit Service 93d855
	 */
Packit Service 93d855
	void (*free_all_info) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Compares the cached info with the actual one, from the server
Packit Service 93d855
	 * xkb: Compares some parts of XkbDescPtr
Packit Service 93d855
	 * xmodmap: returns False
Packit Service 93d855
	 */
Packit Service 93d855
	 gboolean(*if_cached_info_equals_actual) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Loads the configuration info from the server
Packit Service 93d855
	 * xkb: loads XkbDesc, names, indicators
Packit Service 93d855
	 * xmodmap: loads internal XklConfigRec from server
Packit Service 93d855
	 */
Packit Service 93d855
	 gboolean(*load_all_info) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Gets the current state
Packit Service 93d855
	 * xkb: XkbGetState and XkbGetIndicatorState
Packit Service 93d855
	 * xmodmap: check the root window property (regarding the group)
Packit Service 93d855
	 */
Packit Service 93d855
	void (*get_server_state) (XklEngine * engine,
Packit Service 93d855
				  XklState * current_state_out);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Stop tracking the keyboard-related events
Packit Service 93d855
	 * xkb: XkbSelectEvents(..., 0)
Packit Service 93d855
	 * xmodmap: Ungrab the switching shortcut.
Packit Service 93d855
	 */
Packit Service 93d855
	 gint(*pause_listen) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Start tracking the keyboard-related events
Packit Service 93d855
	 * xkb: XkbSelectEvents + XkbSelectEventDetails
Packit Service 93d855
	 * xmodmap: Grab the switching shortcut.
Packit Service 93d855
	 */
Packit Service 93d855
	 gint(*resume_listen) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Set the indicators state from the XklState
Packit Service 93d855
	 * xkb: XklSetIndicator for all indicators
Packit Service 93d855
	 * xmodmap: NULL. Not supported
Packit Service 93d855
	 */
Packit Service 93d855
	void (*set_indicators) (XklEngine * engine,
Packit Service 93d855
				const XklState * window_state);
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Perform the cleanup
Packit Service 93d855
	 */
Packit Service 93d855
	void (*finalize) (XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
	/* all data is private - no direct access */
Packit Service 93d855
	/*
Packit Service 93d855
	 * The base configuration atom.
Packit Service 93d855
	 * xkb: _XKB_RF_NAMES_PROP_ATOM
Packit Service 93d855
	 * xmodmap:  "_XMM_NAMES"
Packit Service 93d855
	 */
Packit Service 93d855
	Atom base_config_atom;
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * The configuration backup atom
Packit Service 93d855
	 * xkb: "_XKB_RULES_NAMES_BACKUP"
Packit Service 93d855
	 * xmodmap: "_XMM_NAMES_BACKUP"
Packit Service 93d855
	 */
Packit Service 93d855
	Atom backup_config_atom;
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Fallback for missing model
Packit Service 93d855
	 */
Packit Service 93d855
	const gchar *default_model;
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Fallback for missing layout
Packit Service 93d855
	 */
Packit Service 93d855
	const gchar *default_layout;
Packit Service 93d855
Packit Service 93d855
	/*
Packit Service 93d855
	 * Any stuff backend might need to put in here
Packit Service 93d855
	 */
Packit Service 93d855
	gpointer backend;
Packit Service 93d855
};
Packit Service 93d855
Packit Service 93d855
extern XklEngine *xkl_get_the_engine(void);
Packit Service 93d855
Packit Service 93d855
struct _XklConfigRegistryPrivate {
Packit Service 93d855
	XklEngine *engine;
Packit Service 93d855
Packit Service 93d855
	xmlDocPtr docs[XKL_NUMBER_OF_REGISTRY_DOCS];
Packit Service 93d855
	xmlXPathContextPtr xpath_contexts[XKL_NUMBER_OF_REGISTRY_DOCS];
Packit Service 93d855
};
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_ensure_vtable_inited(XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_process_focus_in_evt(XklEngine * engine,
Packit Service 93d855
					    XFocusChangeEvent * fev);
Packit Service 93d855
extern void xkl_engine_process_focus_out_evt(XklEngine * engine,
Packit Service 93d855
					     XFocusChangeEvent * fev);
Packit Service 93d855
extern void xkl_engine_process_property_evt(XklEngine * engine,
Packit Service 93d855
					    XPropertyEvent * rev);
Packit Service 93d855
extern void xkl_engine_process_create_window_evt(XklEngine * engine,
Packit Service 93d855
						 XCreateWindowEvent * cev);
Packit Service 93d855
Packit Service 93d855
extern int xkl_process_error(Display * dpy, XErrorEvent * evt);
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_process_state_modification(XklEngine * engine,
Packit Service 93d855
						  XklEngineStateChange
Packit Service 93d855
						  change_type, gint group,
Packit Service 93d855
						  unsigned inds,
Packit Service 93d855
						  gboolean set_indicators);
Packit Service 93d855
Packit Service 93d855
extern Window xkl_engine_get_registered_parent(XklEngine * engine,
Packit Service 93d855
					       Window win);
Packit Service 93d855
extern void xkl_engine_reset_all_info(XklEngine * engine, gboolean force,
Packit Service 93d855
				      const gchar reason[]);
Packit Service 93d855
extern gboolean xkl_engine_load_window_tree(XklEngine * engine);
Packit Service 93d855
extern gboolean xkl_engine_load_subtree(XklEngine * engine, Window window,
Packit Service 93d855
					gint level, XklState * init_state);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_engine_if_window_has_wm_state(XklEngine * engine,
Packit Service 93d855
						  Window win);
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * Toplevel window stuff
Packit Service 93d855
 */
Packit Service 93d855
extern void xkl_engine_add_toplevel_window(XklEngine * engine, Window win,
Packit Service 93d855
					   Window parent, gboolean force,
Packit Service 93d855
					   XklState * init_state);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_engine_find_toplevel_window_bottom_to_top(XklEngine *
Packit Service 93d855
							      engine,
Packit Service 93d855
							      Window win,
Packit Service 93d855
							      Window *
Packit Service 93d855
							      toplevel_win_out);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_engine_find_toplevel_window(XklEngine * engine,
Packit Service 93d855
						Window win,
Packit Service 93d855
						Window * toplevel_win_out);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_engine_is_toplevel_window_transparent(XklEngine *
Packit Service 93d855
							  engine,
Packit Service 93d855
							  Window
Packit Service 93d855
							  toplevel_win);
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_set_toplevel_window_transparent(XklEngine * engine,
Packit Service 93d855
						       Window toplevel_win,
Packit Service 93d855
						       gboolean
Packit Service 93d855
						       transparent);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_engine_get_toplevel_window_state(XklEngine * engine,
Packit Service 93d855
						     Window toplevel_win,
Packit Service 93d855
						     XklState * state_out);
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_remove_toplevel_window_state(XklEngine * engine,
Packit Service 93d855
						    Window toplevel_win);
Packit Service 93d855
extern void xkl_engine_save_toplevel_window_state(XklEngine * engine,
Packit Service 93d855
						  Window toplevel_win,
Packit Service 93d855
						  XklState * state);
Packit Service 93d855
/***/
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_select_input_merging(XklEngine * engine, Window win,
Packit Service 93d855
					    gulong mask);
Packit Service 93d855
Packit Service 93d855
extern gchar *xkl_get_debug_window_title(XklEngine * engine, Window win);
Packit Service 93d855
Packit Service 93d855
extern Status xkl_engine_query_tree(XklEngine * engine,
Packit Service 93d855
				    Window w,
Packit Service 93d855
				    Window * root_out,
Packit Service 93d855
				    Window * parent_out,
Packit Service 93d855
				    Window ** children_out,
Packit Service 93d855
				    guint * nchildren_out);
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_try_call_state_func(XklEngine * engine,
Packit Service 93d855
					   XklEngineStateChange
Packit Service 93d855
					   change_type,
Packit Service 93d855
					   XklState * old_state);
Packit Service 93d855
Packit Service 93d855
extern gchar *xkl_engine_get_ruleset_name(XklEngine * engine,
Packit Service 93d855
					  const gchar default_ruleset[]);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_config_rec_get_full_from_server(gchar **
Packit Service 93d855
						    rules_file_out,
Packit Service 93d855
						    XklConfigRec * data,
Packit Service 93d855
						    XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
extern gchar *xkl_strings_concat_comma_separated(gchar ** array);
Packit Service 93d855
Packit Service 93d855
extern void xkl_strings_split_comma_separated(gchar *** array,
Packit Service 93d855
					      const gchar * merged);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * XConfigRec
Packit Service 93d855
 */
Packit Service 93d855
extern gchar *xkl_config_rec_merge_layouts(const XklConfigRec * data);
Packit Service 93d855
Packit Service 93d855
extern gchar *xkl_config_rec_merge_variants(const XklConfigRec * data);
Packit Service 93d855
Packit Service 93d855
extern gchar *xkl_config_rec_merge_options(const XklConfigRec * data);
Packit Service 93d855
Packit Service 93d855
extern void xkl_config_rec_split_layouts(XklConfigRec * data,
Packit Service 93d855
					 const gchar * merged);
Packit Service 93d855
Packit Service 93d855
extern void xkl_config_rec_split_variants(XklConfigRec * data,
Packit Service 93d855
					  const gchar * merged);
Packit Service 93d855
Packit Service 93d855
extern void xkl_config_rec_split_options(XklConfigRec * data,
Packit Service 93d855
					 const gchar * merged);
Packit Service 93d855
/***/
Packit Service 93d855
Packit Service 93d855
extern void xkl_config_rec_dump(FILE * file, XklConfigRec * data);
Packit Service 93d855
Packit Service 93d855
extern const gchar *xkl_event_get_name(gint type);
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_update_current_state(XklEngine * engine, gint group,
Packit Service 93d855
					    unsigned indicators,
Packit Service 93d855
					    const gchar reason[]);
Packit Service 93d855
Packit Service 93d855
extern gint xkl_xkb_init(XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
extern gint xkl_xmm_init(XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
extern gboolean
Packit Service 93d855
xkl_engine_is_one_switch_to_secondary_group_allowed(XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
extern void xkl_engine_one_switch_to_secondary_group_performed(XklEngine *
Packit Service 93d855
							       engine);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_config_registry_load_from_file(XklConfigRegistry *
Packit Service 93d855
						   config,
Packit Service 93d855
						   const gchar * file_name,
Packit Service 93d855
						   gint docidx);
Packit Service 93d855
Packit Service 93d855
extern void xkl_config_registry_free(XklConfigRegistry * config);
Packit Service 93d855
Packit Service 93d855
extern gchar *xkl_locale_from_utf8(XklConfigRegistry * config,
Packit Service 93d855
				   const gchar * utf8string);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_config_registry_load_helper(XklConfigRegistry * config, const char
Packit Service 93d855
						default_ruleset[],
Packit Service 93d855
						const char base_dir[],
Packit Service 93d855
						gboolean if_extras_needed);
Packit Service 93d855
Packit Service 93d855
#define XKLAVIER_STATE_PROP_LENGTH 2
Packit Service 93d855
Packit Service 93d855
/* taken from XFree86 maprules.c */
Packit Service 93d855
#define XKB_RF_NAMES_PROP_MAXLEN 1024
Packit Service 93d855
Packit Service 93d855
#define WINID_FORMAT "%lx"
Packit Service 93d855
Packit Service 93d855
#define xkl_engine_priv(engine,member)  (engine)->priv->member
Packit Service 93d855
#define xkl_engine_backend(engine,type,member)  ((type*)((engine)->priv->backend))->member
Packit Service 93d855
#define xkl_engine_get_display(engine) (xkl_engine_priv(engine,display))
Packit Service 93d855
#define xkl_engine_vcall(engine,func)  (*(engine)->priv->func)
Packit Service 93d855
Packit Service 93d855
#define xkl_config_registry_is_initialized(config) \
Packit Service 93d855
  ( xkl_config_registry_priv(config,xpath_contexts[0]) != NULL )
Packit Service 93d855
Packit Service 93d855
#define xkl_config_registry_priv(config,member)  (config)->priv->member
Packit Service 93d855
#define xkl_config_registry_get_engine(config) ((config)->priv->engine)
Packit Service 93d855
Packit Service 93d855
#define XKBCR_MODEL_PATH "/xkbConfigRegistry/modelList/model"
Packit Service 93d855
#define XKBCR_LAYOUT_PATH "/xkbConfigRegistry/layoutList/layout"
Packit Service 93d855
#define XKBCR_VARIANT_PATH XKBCR_LAYOUT_PATH "/variantList/variant"
Packit Service 93d855
#define XKBCR_GROUP_PATH "/xkbConfigRegistry/optionList/group"
Packit Service 93d855
#define XKBCR_OPTION_PATH XKBCR_GROUP_PATH "/option"
Packit Service 93d855
Packit Service 93d855
#define XML_TAG_DESCR "description"
Packit Service 93d855
#define XML_TAG_SHORT_DESCR "shortDescription"
Packit Service 93d855
#define XML_TAG_VENDOR "vendor"
Packit Service 93d855
#define XML_TAG_COUNTRY_LIST "countryList"
Packit Service 93d855
#define XML_TAG_LANGUAGE_LIST "languageList"
Packit Service 93d855
#define XML_TAG_ISO3166ID "iso3166Id"
Packit Service 93d855
#define XML_TAG_ISO639ID "iso639Id"
Packit Service 93d855
Packit Service 93d855
extern void
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
xkl_config_registry_foreach_in_xpath_with_param(XklConfigRegistry * config,
Packit Service 93d855
						const gchar * format,
Packit Service 93d855
						const gchar * value,
Packit Service 93d855
						XklConfigItemProcessFunc func,
Packit Service 93d855
						gpointer data);
Packit Service 93d855
Packit Service 93d855
extern void xkl_config_registry_foreach_in_xpath(XklConfigRegistry *
Packit Service 93d855
						 config,
Packit Service 93d855
						 xmlXPathCompExprPtr
Packit Service 93d855
						 xpath_comp_expr,
Packit Service 93d855
						 XklConfigItemProcessFunc
Packit Service 93d855
						 func, gpointer data);
Packit Service 93d855
Packit Service 93d855
extern gboolean xkl_read_config_item(XklConfigRegistry * config,
Packit Service 93d855
				     gint doc_index, xmlNodePtr iptr,
Packit Service 93d855
				     XklConfigItem * item);
Packit Service 93d855
Packit Service 93d855
extern gint xkl_debug_level;
Packit Service 93d855
Packit Service 93d855
extern const gchar *xkl_last_error_message;
Packit Service 93d855
Packit Service 93d855
#endif