<!-- ##### SECTION Title ##### -->
XklEngine

<!-- ##### SECTION Short_Description ##### -->


<!-- ##### SECTION Long_Description ##### -->
<para>

</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### STRUCT XklEnginePrivate ##### -->
<para>

</para>


<!-- ##### ENUM XklEngineStateChange ##### -->
<para>

</para>

@GROUP_CHANGED: 
@INDICATORS_CHANGED: 

<!-- ##### ENUM XklEngineFeatures ##### -->
<para>

</para>

@XKLF_CAN_TOGGLE_INDICATORS: 
@XKLF_CAN_OUTPUT_CONFIG_AS_ASCII: 
@XKLF_CAN_OUTPUT_CONFIG_AS_BINARY: 
@XKLF_MULTIPLE_LAYOUTS_SUPPORTED: 
@XKLF_REQUIRES_MANUAL_LAYOUT_MANAGEMENT: 
@XKLF_DEVICE_DISCOVERY: 

<!-- ##### STRUCT XklState ##### -->
<para>

</para>

@group: 
@indicators: 

<!-- ##### STRUCT XklEngine ##### -->
<para>

</para>


<!-- ##### SIGNAL XklEngine::X-config-changed ##### -->
<para>

</para>

@xklengine: the object which received the signal.

<!-- ##### SIGNAL XklEngine::X-new-device ##### -->
<para>

</para>

@xklengine: the object which received the signal.

<!-- ##### SIGNAL XklEngine::X-state-changed ##### -->
<para>

</para>

@xklengine: the object which received the signal.
@arg1: 
@arg2: 
@arg3: 

<!-- ##### SIGNAL XklEngine::new-toplevel-window ##### -->
<para>

</para>

@xklengine: the object which received the signal.
@arg1: 
@arg2: 
@Returns: 

<!-- ##### ARG XklEngine:backendName ##### -->
<para>

</para>

<!-- ##### ARG XklEngine:default-group ##### -->
<para>

</para>

<!-- ##### ARG XklEngine:display ##### -->
<para>

</para>

<!-- ##### ARG XklEngine:features ##### -->
<para>

</para>

<!-- ##### ARG XklEngine:indicators-handling ##### -->
<para>

</para>

<!-- ##### ARG XklEngine:max-num-groups ##### -->
<para>

</para>

<!-- ##### ARG XklEngine:num-groups ##### -->
<para>

</para>

<!-- ##### ARG XklEngine:secondary-groups-mask ##### -->
<para>

</para>

<!-- ##### FUNCTION xkl_engine_get_instance ##### -->
<para>

</para>

@display: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_backend_name ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_features ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_max_num_groups ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### ENUM XklEngineListenModes ##### -->
<para>

</para>

@XKLL_MANAGE_WINDOW_STATES: 
@XKLL_TRACK_KEYBOARD_STATE: 
@XKLL_MANAGE_LAYOUTS: 

<!-- ##### FUNCTION xkl_engine_start_listen ##### -->
<para>

</para>

@engine: 
@flags: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_stop_listen ##### -->
<para>

</para>

@engine: 
@flags: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_pause_listen ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_resume_listen ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_grab_key ##### -->
<para>

</para>

@engine: 
@keycode: 
@modifiers: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_ungrab_key ##### -->
<para>

</para>

@engine: 
@keycode: 
@modifiers: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_filter_events ##### -->
<para>

</para>

@engine: 
@evt: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_allow_one_switch_to_secondary_group ##### -->
<para>

</para>

@engine: 


<!-- ##### FUNCTION xkl_engine_get_current_window ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_current_state ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_window_title ##### -->
<para>

</para>

@engine: 
@win: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_state ##### -->
<para>

</para>

@engine: 
@win: 
@state_out: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_delete_state ##### -->
<para>

</para>

@engine: 
@win: 


<!-- ##### FUNCTION xkl_engine_save_state ##### -->
<para>

</para>

@engine: 
@win: 
@state: 


<!-- ##### FUNCTION xkl_engine_set_window_transparent ##### -->
<para>

</para>

@engine: 
@win: 
@Param3: 


<!-- ##### FUNCTION xkl_engine_is_window_transparent ##### -->
<para>

</para>

@engine: 
@win: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_is_window_from_same_toplevel_window ##### -->
<para>

</para>

@engine: 
@win1: 
@win2: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_num_groups ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_groups_names ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_indicators_names ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_next_group ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_prev_group ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_get_current_window_group ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_lock_group ##### -->
<para>

</para>

@engine: 
@group: 


<!-- ##### FUNCTION xkl_engine_set_group_per_toplevel_window ##### -->
<para>

</para>

@engine: 
@Param2: 


<!-- ##### FUNCTION xkl_engine_is_group_per_toplevel_window ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_set_indicators_handling ##### -->
<para>

</para>

@engine: 
@Param2: 


<!-- ##### FUNCTION xkl_engine_get_indicators_handling ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_set_secondary_groups_mask ##### -->
<para>

</para>

@engine: 
@mask: 


<!-- ##### FUNCTION xkl_engine_get_secondary_groups_mask ##### -->
<para>

</para>

@engine: 
@Returns: 


<!-- ##### FUNCTION xkl_engine_set_default_group ##### -->
<para>

</para>

@engine: 
@group: 


<!-- ##### FUNCTION xkl_engine_get_default_group ##### -->
<para>

</para>

@engine: 
@Returns: 


